如何在python中将列表元素分配给不同的文本名称?

Ş.T*_*fan 1 python direction

我正在努力解决这个问题.

我有一个这样的列表:

  g = ['hey','man','sup']
Run Code Online (Sandbox Code Playgroud)

我想要3个不同的文本文件,如"hey.txt","man.txt","sup.txt".

我用了;

f = open('hey.txt','w')
sys.stdout = f
....
Run Code Online (Sandbox Code Playgroud)

但有没有办法做到这一点?

for x in range(3):
    f = open('g[x].txt','w')
Run Code Online (Sandbox Code Playgroud)

Ale*_*lev 5

使用字符串格式:

for filename in g:
    f = open('{}.txt'.format(filename),'w')
Run Code Online (Sandbox Code Playgroud)

  • `for x in g:`会更好......特别是如果用`filename`替换`x`来获得富有表现力的变量名. (2认同)

The*_*nse 5

你快到了

而不是这个

for x in range(3):
    f = open('g[x].txt','w')
Run Code Online (Sandbox Code Playgroud)

做这个:

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

实际问题是'g[x].txt'它是一个字符串,并且它的值在每次迭代期间都不会改变,因为g我们使用g [x]返回一个字符串,然后可以附加该字符串'.txt'以形成文件名

你可以用 context manager to open the file object

即)

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

如果你想要索引和值,那么你可以使用枚举器

即)

for index,value in enumerate(g):
    with open(value+'.txt','w') as f:
Run Code Online (Sandbox Code Playgroud)