0

大家好,我对全局变量有疑问。如何将文件名放入变量中并在全局上调用它。我的代码:

for filename in dirs:
    if filename.startswith("EPG_NatGeo"):
            z = filename


output_file = open('nat.xml','w') 
with open (r'{}','r').format(z) as file:

varibale如何成为打开文件?感谢阅读这篇文章!

4

1 回答 1

2

您根本不需要.format()在这里使用:

with open(z, 'r') as file:

即使你这样做了,你也会在字符串对象上调用它,而不是打开的文件:

with open('foo_{}_bar'.format(z), 'r') as file:

请注意,如果多个值与您的测试匹配,z则在循环中多次重新绑定,您只会将最后一个匹配传递给. 如果没有匹配的值,您将冒着从未被绑定的风险,而您将获得异常。filename.startswith()open()zNameError

用于break选择第一个匹配项,并else:for循环中使用以检测没有匹配项:

for filename in dirs:
    if filename.startswith("EPG_NatGeo"):
        z = filename
        break
else:
    raise ValueError('No filename matched')
于 2013-10-03T08:29:11.480 回答