2

可能重复:
如何在 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

5 回答 5

0

如果我理解正确:

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

这是“从指定的文件名中取出每一行your_list并将它们写入output.txt

于 2012-11-19T20:06:51.817 回答
0

您想使用 追加文件,open(filename, 'a')另请参阅:如何追加到文件?

于 2012-11-19T18:38:36.797 回答
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
于 2012-11-19T19:42:51.413 回答
0

要将一个文件的内容复制到另一个文件三次,您可以执行以下操作:

with open('outfile.txt','w') as outFile:
    for _ in range(3):
        with open('infile.txt','r') as inFile:
            for line in inFile:
                outFile.write(line)

要将文件列表的内容复制到另一个文件中,您可以执行以下操作:

def merge_file(fileList, outFileName):
    with open(outFileName, 'w') as outFile:
        for fileName in fileList:
            with open(fileName, 'r') as inFile:
                for line in inFile:
                    outFile.write(line)

这两个都未经测试,但它们应该可以工作

于 2012-11-19T18:50:14.930 回答
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-范围

于 2012-11-19T19:53:39.567 回答