如何将文件列表复制到另一个文件?

时间:2012-11-19 18:32:52

标签: python

  

可能重复:
  How do I concatenate files in Python?

def copy_file(file_name,copy_file_name,copies):
    i=0
    a=open(file_name,'r')
    f=open(copy_file_name,'w')
    for line in a:
        while i<copies:
            f.write(line)
            i+=1
    a.close()
    f.close()
    return 
copy_file("D:\student\example2.txt","D:\student\copy_file_name.txt",3)

我需要将文本文件复制3次到另一个文件,然后循环在第一行之后停止:(

def merge_file(list,file_name):
    for i in range(len(list)):
        a=open(list[i],'r')
        f=open(file_name,'w')
        f.write(list[i])
    f.close
    a.close
    return
merge_file([("D:\student\example2.txt"),("D:\student\example3.txt")],"D:\student\copy_file_name.txt")

我需要将文件列表复制到一个文件中。

4 个答案:

答案 0 :(得分:0)

您要使用open(filename, 'a')附加文件,另请参阅:How do you append to a file?

答案 1 :(得分:0)

使用shutil.copyfileobj为您制作副本。请注意,此方法完全不知道输入文件中的任何编码问题和特定于平台的行分隔符。将复制纯字节流。

import shutil

# the file to copy to
outfname = "D:\student\copy_file_name.txt"

# the files to copy from
infnames = ["D:\student\example2.txt", "D:\student\example3.txt"]

# the copy procedure
with open("outfile", 'w') as outfile:
    for fname in infnames:
        shutil.copyfileobj(open(fname, 'rb'), outfile)

如果您想要复制单个文件的内容达到给定次数,只需相应地补充infnames

# the file to copy from n_repetitions times
infnames = ["D:\student\example2.txt"] * n_repetitions

# same as above

答案 2 :(得分:0)

你对merge_file的调用是传递len 1的列表,单个项目是2元组。

而不是你拥有的:

merge_file([("D:\student\example2.txt"),("D:\student\example3.txt")],"D:\student\copy_file_name.txt")

试试这个(我想这就是你的意思:

merge_file(["D:\student\example2.txt","D:\student\example3.txt"],"D:\student\copy_file_name.txt")

我希望你能看出差异。如果您不熟悉python以及列表和元组,我建议您进行一些研究:http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange

答案 3 :(得分:0)

如果我理解正确:

import fileinput
with open('output.txt') as fout:
    fout.writelines(fileinput.input(your_list))

哪个是“从your_list中指定的文件名中取出每一行并将其写入output.txt