Python连接文本文件

Python连接文本文件

我有20个文件名的列表,比如['file1.txt', 'file2.txt', ...]..我想编写一个Python脚本,将这些文件连接到一个新文件中。我可以打开每个文件f = open(...),通过调用读取行f.readline(),并将每一行写入新文件中。在我看来,这不太“优雅”,尤其是我不得不逐行读/写的部分。

在Python中是否有一种更“优雅”的方法来做到这一点呢?


慕仙森
浏览 672回答 3
3回答

繁花如伊

使用shutil.copyfileobj.它会自动为您逐个读取输入文件,这样可以更高效地读取输入文件,即使有些输入文件太大,无法装入内存,也会工作:with open('output_file.txt','wb') as wfd:     for f in ['seg1.txt','seg2.txt','seg3.txt']:         with open(f,'rb') as fd:             shutil.copyfileobj(fd, wfd)

慕容708150

这正是文件输入用于:import fileinputwith open(outfilename, 'w') as fout, fileinput.input(filenames) as fin:     for line in fin:         fout.write(line)对于这个用例,它实际上并不比手动迭代文件简单得多,但在其他情况下,有一个迭代器来迭代所有文件,就像它们是一个文件一样非常方便。(同时,事实上fileinput完成后立即关闭每个文件,这意味着没有必要with或close但这只是一笔单线储蓄,没什么大不了的。)中还有一些其他漂亮的特性。fileinput,就像仅通过过滤每一行就可以对文件进行就地修改的能力。如评论中所述,另一份评论中对此进行了讨论。岗, fileinput对于Python2.7来说,不会像前面所指出的那样工作。这里略作修改,使Python2.7代码兼容with open('outfilename', 'w') as fout:     fin = fileinput.input(filenames)     for line in fin:         fout.write(line)     fin.close()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python