【发布时间】:2021-04-06 13:18:52
【问题描述】:
我制作了这个 Python 3 小脚本来创建具有日-月-年名称的文件夹,从 16-09-2020 到 16-10-2020:
import os
# starting values for day, month and year
parent_dir = 'C:\\Users\\locale\\Desktop\\DIRS\\'
day_int = 16
month_int = 9
year_int = 2020
def gen_day_str():
if len(str(day_int)) == 1:
day_str = '0' + str(day_int)
elif len(str(day_int)) == 2:
day_str = str(day_int)
else:
print('error! exiting...')
exit()
def gen_month_str():
if len(str(month_int)) == 1:
month_str = '0' + str(month_int)
elif len(str(month_int)) == 2:
month_str = str(month_int)
else:
print('error! exiting...')
exit()
def gen_year_str():
year_str = str(year_int)
def gen_dir_name():
gen_day_str()
gen_month_str()
gen_year_str()
dir_name = day_str + '-' + month_str + '-' + year_str
while day_int <= 30:
gen_dir_name()
os.mkdir(parent_dir + dir_name)
day_int += 1
day_int = 1
month_int = 10
while day_int <= 16:
gen_dir_name()
os.mkdir(parent_dir + dir_name)
day_int += 1
print('folders created successfully!')
exit()
但是当我运行它时,我收到一个 NameError...
Traceback (most recent call last):
File "folder_gen.py", line 36, in <module>
gen_dir_name()
File "folder_gen.py", line 32, in gen_dir_name
dir_name = day_str + '-' + month_str + '-' + year_str
NameError: name 'day_str' is not defined
我不明白为什么需要在运行函数之前定义 day_str(或 month_str/year_str)
我尝试通过在开始时定义 day_str、month_str 和 year_str 来修复它,例如:
.
.
.
day_int = 16
month_int = 9
year_int = 2020
day_str = str(day_int)
month_str = '0' + str(month_int)
year_str = str(year_int)
.
.
.
但随后程序只创建了一个文件夹(16-09-2020)并退出。
有人可以向我解释我做错了什么吗?
【问题讨论】:
-
在您的
gen_dir_name函数中,您还没有定义day_str变量 -
day_str仅作为gen_day_str()函数内的局部变量存在。其他任何地方都无法访问。 -
这能回答你的问题吗? Variable not available to sub-function - 实际上,乍一看,它很接近,但并不完全相同。
-
你忘记
returnall day_str, month_str, etc... -
那么将它们声明为函数内部的全局变量应该可以解决问题吗?我会试试的
标签: python python-3.x