我该如何解决这个 python NameError?

时间:2020-12-29 23:34:50

标签: python python-3.x

我制作了这个小 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) 并退出。

有人可以向我解释我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

你必须在函数中返回每个创建的字符串,就像这个例子:


def gen_year_str():
    return str(year_int)
    
def gen_dir_name():
   
    dir_name = gen_day_str() + '-' + gen_month_str() + '-' + gen_year_str()
    print(dir_name)

# Output:
16-09-2020
......