2015-09-11 40 views
1

我想解決這個問題。如何將列表元素分配給python中的不同文本名稱?

我有一個這樣的名單:

g = ['hey','man','sup'] 

,我想3個不同的文本文件,如 「hey.txt」, 「man.txt」, 「sup.txt」。

我用過;

f = open('hey.txt','w') 
sys.stdout = f 
.... 

但是有沒有辦法像這樣做?

for x in range(3): 
    f = open('g[x].txt','w') 

回答

5

使用字符串formatting

for filename in g: 
    f = open('{}.txt'.format(filename),'w') 
+2

'對於以g X:'甚至會更好......特別是如果你更換'x'與'filename'得到表現的變量名。 – swenzel

5

你幾乎沒有

取而代之的是

for x in range(3): 
    f = open('g[x].txt','w') 

這樣做:

for x in range(3): 
    f = open(g[x]+'.txt','w') 

實際問題是'g[x].txt'這是一個字符串,它的值在每次迭代中都不會改變,因爲我們使用g [x]返回一個字符串,然後可以附加'.txt'以形成文件名

你可以使用context manager to open the file object

即)

for x in range(3): 
    with open(g[x]+'.txt','w') as f: 

如果你想同時指數和值,那麼你可以使用enumerator

即)

for index,value in enumerate(g): 
    with open(value+'.txt','w') as f: 
+0

非常感謝! –

+1

你也可以直接迭代_iterable_:'g:' – wap26

+0

@ wap26是的,我們可以:) – The6thSense

相關問題