我想创建一个循环来测试人们输入的名称是否为文本文件。 我做我的测试,但如果我要求人们重新输入文件的名称,它不会更改全局文件名。
我知道,这是一个全局和局部变量的问题,但我找不到改变它的方法。
这是我的代码:
def name():
global f1
global t
global f2
print('File Name')
f1 = input()
t = match(r'.+(\..+$)',f1)
while t.group(1) != '.txt' :
print(t.group(1))
print("New file Name")
f2 = input()
f1 = f2
print(f1)
name()
答案 0 :(得分:2)
我根本不知道你为什么需要全局变量,为什么不把代码重写成如下代码:
from os.path import splitext
def get_name():
while True:
name = input("File name> ")
if splitext(name)[1] != '.txt':
print("Invalid name, give another")
else:
return name
filename = get_name()