我有一个在for循环中生成的python列表['a','b','c']
。我想将列表的每个元素写入一个新文件。
我试过了:
counter = 0
for i in python_list:
outfile = open('/outdirectory/%s.txt') % str(counter)
outfile.write(i)
outfile.close()
counter += 1
我收到错误:
IOError: [Erno 2] No suchfile or directory.
如何以编程方式在for循环中创建和写入文件?
答案 0 :(得分:2)
您没有将模式传递给打开,因此它正在尝试以读取模式打开。
outfile = open('/outdirectory/%s.txt' % str(counter), "w")
试试这个:
out_directory = "/outdirectory"
if not os.path.exists(out_directory):
os.makedirs(out_directory)
for counter in range(0, len(python_list)):
file_path = os.path.join(out_directory, "%s.txt" % counter)
with open(file_path, "w") as outfile:
outfile.write(python_list[counter])
答案 1 :(得分:2)
一些建议:
with
语句处理文件
[docs]。open()
的调用失败,可能是因为该目录不存在。要么你有错字,要么你需要先创建目录(例如,如this question)。示例:
l = ['a', 'b', 'c']
for i, data in enumerate(l):
fname = 'outdirectory/%d.txt' % i
with open(fname, 'w') as f:
f.write(data)
答案 2 :(得分:2)
基本上你收到的消息是因为你试图打开一个名为/outdirectory/%s.txt
的文件。 ErlVolton显示的以下错误是您不以书面模式打开文件。另外,您必须检查您的目录是否存在。如果您使用/outdirectory
,则表示从文件系统的根目录开始。
三个pythonic附加: - 枚举迭代器,用于自动计算列表中的项目 - with statement autoclose您的文件。 - 格式可以比%东西更清晰
所以代码可以写成以下
for counter,i in enumerate(python_list):
with open('outdirectory/{}.txt'.format(counter),"w") as outfile:
outfile.write(i)
PS:下次显示完整的回溯痕迹