用python,F文件里面有A、B、C、D、E,5个文件,现想把5个文件的内容全部复制到一个新文件中,怎么写
展开全部
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")
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询