python脚本将目录中的所有文件合并为一个文件 [英] python script to concatenate all the files in the directory into one file

查看:161
本文介绍了python脚本将目录中的所有文件合并为一个文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编写了以下脚本,将目录中的所有文件连接为一个文件。

I have written the following script to concatenate all the files in the directory into one single file.

可以根据


  1. 惯用python进行优化吗?

  1. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆