python脚本将目录中的所有文件合并为一个文件 [英] python script to concatenate all the files in the directory into one file
问题描述
我编写了以下脚本,将目录中的所有文件连接为一个文件。
I have written the following script to concatenate all the files in the directory into one single file.
可以根据
-
惯用python进行优化吗?
idiomatic python
时间
以下是代码段:
import time, glob
outfilename = 'all_' + str((int(time.time()))) + ".txt"
filenames = glob.glob('*.txt')
with open(outfilename, 'wb') as outfile:
for fname in filenames:
with open(fname, 'r') as readfile:
infile = readfile.read()
for line in infile:
outfile.write(line)
outfile.write("\n\n")
推荐答案
使用 shutil.copyfileobj
复制数据:
Use shutil.copyfileobj
to copy data:
import shutil
with open(outfilename, 'wb') as outfile:
for filename in glob.glob('*.txt'):
if filename == outfilename:
# don't want to copy the output into the output
continue
with open(filename, 'rb') as readfile:
shutil.copyfileobj(readfile, outfile)
shutil
从将 readfile
对象成块,将其直接写入 outfile
文件对象。不要使用 readline()
或迭代缓冲区,因为您不需要查找行尾的开销。
shutil
reads from the readfile
object in chunks, writing them to the outfile
fileobject directly. Do not use readline()
or a iteration buffer, since you do not need the overhead of finding line endings.
使用相同的模式进行读写;这在使用Python 3时尤其重要;我在这里都使用了二进制模式。
Use the same mode for both reading and writing; this is especially important when using Python 3; I've used binary mode for both here.
这篇关于python脚本将目录中的所有文件合并为一个文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!