2015-09-11 3 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

'для й в г:' было бы еще лучше ... особенно, если вы заменили '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 элементов, которые мы используем г [х], который возвращает строку, которая затем может быть приложена '.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

 Смежные вопросы

  • Нет связанных вопросов^_^