这是我从以前的代码修改的代码。但是,我得到了这个错误:
TypeError: must be str not list in f1.write(head)
这是产生此错误的代码部分:
from itertools import islice
with open("input.txt") as myfile:
head = list(islice(myfile, 3))
f1.write(head)
f1.close()
好吧,您做对了,使用islice(filename, n)
将获得n
file的第一行filename
。这里的问题是当您尝试将这些行写入另一个文件时。
该错误非常直观(在这种情况下,我添加了一个完整的错误):
TypeError: write() argument must be str, not list
这是因为f.write()
接受字符串作为参数,而不是list
类型。
因此,与其按原样转储列表,不如使用for
循环将其内容写入其他文件中:
with open("input.txt", "r") as myfile:
head = list(islice(myfile, 3))
# always remember, use files in a with statement
with open("output.txt", "w") as f2:
for item in head:
f2.write(item)
可以肯定的是,列表的内容都是所有类型,str
因此它的工作原理就像一个咒语;如果没有,你只需要每个包裹item
在for
循环中的str()
通话,以确保它转换为字符串。
如果您想要一种不需要循环的方法,则可以始终考虑使用f.writelines()
而不是f.write()
(并且,请查看Jon的注释,以获取另一个技巧writelines
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句