如何在多个文本文件中写入列表的每个元素?

时间:2018-08-11 16:36:54

标签: python

我正在尝试将列表中的每个元素写入多个文件。

假设我有一个列表:

value = [ 'abc' , 'def' , 'ghi' ]

如何将列表value中的每个元素写入多个文件?因此,在这种情况下,应该创建三个文本文件,并且每个文件中的值分别为abc,defghi

我有一个简单的python脚本,该脚本会将所有列表值写入单个文本文件:

value = ['a','b','c']

for i in value:

   f=open('/tmp/new.txt','a')
   f.write(i)

如何实现用例?预先感谢。

4 个答案:

答案 0 :(得分:2)

如果您尝试将列表中包含的每个值写入所有n个文件,则可以使用for循环遍历下面的f.write()文件写入命令。您只需写入每个文件一次,因此无需担心open()的'a'或'w +'模式。然后,您可以使用str.join()方法将列表的所有元素打印到每个文件。我在下面使用换行符作为分隔符,但是您可以选择任何内容。

这是我更改您的代码以执行此操作的方式...

value = ['a','b','c']
for i in range(len(value)):
    with open("new_%d.txt" % i, 'w') as f:
        f.write('\n'.join(value))

还请注意使用with打开每个文件。建议使用python中的最佳做法,因为它可以处理您用open()创建的文件对象。也就是说,使用f.close()完成操作后,您无需显式关闭文件,这很容易忘记。

如果您设置为以new_1.txt开头(与new_0.txt相对,这就是上面的代码将要发生的情况),则将对for的调用更改为以下内容:

for i in range(1,len(value)+1):

或将对with的呼叫更改为:

with open("new_%d.txt" % (i+1), 'w') as f:

答案 1 :(得分:0)

您可以执行以下操作:

for n, i in enumerate(value, 1):
    with open('/tmp/new{}.txt'.format(n), 'a') as f:
        f.write(i)

答案 2 :(得分:0)

下面应该可以工作:

value = ['a','b','c']

for i in range(len(value)):

   f=open('/tmp/new_%s.txt' % i ,'a')
   f.write(value[i])

答案 3 :(得分:0)

使用w+文件模式。它会打开一个现有文件,或者创建一个尚不存在的文件并写入:

value = ['a','b','c']

for x in value:
   with open(f'/tmp/new{x}.txt','w+') as f:
       f.write(x)