python - 将局部变量转换为全局变量

标签 python regex python-3.x global-variables

我想创建一个循环来测试人们输入的名称是否是文本文件。 我做了测试,但如果我要求人们重新输入文件名,它不会更改全局文件名。

我知道,这是全局变量和局部变量的问题,但我找不到更改它的方法。

这是我的代码:

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()

最佳答案

我什至不知道为什么你需要全局变量,为什么不将代码重写为如下所示:

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()

关于python - 将局部变量转换为全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19380733/

相关文章:

python - 无法从 Windows 命令行运行 pyang 命令,但可以从 Git Bash 运行

python - 在 Python 中提取一些 HTML 标记值

regex - 匹配所有没有数字的单词的正则表达式

python - 在 Python 中提取正则表达式匹配的正确方法是什么?

python - 如何从 SimpleNamespace 初始化字典?

python - 将图像从 C++ 传递到 Python 3.4

java - 结尾字母的含义 - pythonw、javaw、javap、javac 等

python - 将背景颜色扩展到连接的组件(洪水填充) - 图像处理

带有装饰器的动态方法创建者的python setattr

python-3.x - 在稳定的 NumPy 中复制子记录数组