2013-10-03 50 views
0

嗨,大家好,我對全局變量有疑問。我如何將文件名放入varibale並在全局中調用它。 我的代碼:打開文件中的Python全局變量

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成爲打開文件? Thx閱讀這篇文章!

+0

那你看,當你運行這段代碼有什麼錯誤? –

回答

2

你並不需要使用.format()在所有位置:

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

,即使你做到了,你把它叫做字符串對象,而不是打開文件:

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

請注意,如果多個filename值與您的.startswith()測試匹配,則z會在您的循環中重新綁定多次,您只會將最後一場比賽傳遞至open()。如果沒有的值匹配,那麼運行風險爲z從來沒有被綁定過,你會得到一個NameError例外。

使用break挑的第一場比賽,並使用else:for循環檢測,沒有匹配的製作:

for filename in dirs: 
    if filename.startswith("EPG_NatGeo"): 
     z = filename 
     break 
else: 
    raise ValueError('No filename matched') 
+0

謝謝Martijn Pieters的回答!你幫我了! – Car