用python,F文件里面有A、B、C、D、E,5个文件,现想把5个文件的内容全部复制到一个新文件中,怎么写

 我来答
nwl586
2013-07-08
知道答主
回答量:8
采纳率:0%
帮助的人:12.9万
展开全部
import os


def merge(folder, output_file):
    file_names = os.listdir(folder)
    output = file(output_file, "w")
    for name in file_names:
        file_path = os.path.join(folder, name)
        if os.path.isfile(file_path):
            print file_path
            f = file(file_path)
            for line in f:
                output.write(line)
            f.close()
    output.close()


merge("F", "merge.txt")


附:Python学习网站:http://cpython.net

Python在线教程:http://cpython.net/tutorial/

Python Online Judge:http://cpython.net/oj/

更多追问追答
追问
如果A B  C D E 中有的文件内容相同,有什么方法可以判断文件内容是否相同,若相同就只复制一个至新文件中
追答

用filecmp库来比较文件内容是否相同

filecmp.cmp(f1, f2[, shallow])

# -*- coding: utf8 -*-
import os
import filecmp


def merge(folder, output_file):
    #所有文件
    file_names = [os.path.join(folder, name)
                  for name in os.listdir(folder)]

    #过滤掉文件夹    
    file_names = [f for f in file_names
                      if os.path.isfile(f)]
    #按文件大小排序,文件大小不同的文件认为内容不同
    file_names.sort(key=lambda f:os.path.getsize(f))
    
    #内容相同的删除
    i = 0
    while i < len(file_names) - 1:
        if filecmp.cmp(file_names[i], file_names[i + 1]):
            del file_names[i + 1]
            continue
        i += 1
        
    output = file(output_file, "w")
    for name in file_names:
        f = file(name)
        for line in f:
            output.write(line)
        f.close()
    output.close()


merge("C:\\project\\ictOS", "merge.txt")
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式