Python中如何连接文本文件?

231

我有一个包含20个文件名的列表,例如['file1.txt','file2.txt',...]。我想编写一个Python脚本将这些文件连接成一个新文件。 我可以通过f = open(...)打开每个文件,通过调用f.readline()逐行读取,并将每行写入新文件中。但对我来说,这似乎不太“优雅”,特别是我必须逐行读写的那部分。

在Python中有更加“优雅”的方式吗?


9
不是用Python,但在Shell脚本中,你可以像这样做:cat file1.txt file2.txt file3.txt ... > output.txt。在Python中,如果你不喜欢readline(),总有readlines()或者简单的read()可供选择。 - jedwards
1
@jedwards 只需使用 subprocess 模块运行 cat file1.txt file2.txt file3.txt 命令,就完成了。但我不确定 cat 在 Windows 上是否可用。 - Ashwini Chaudhary
7
作为注释,你所描述的读取文件的方式是一个糟糕的方法。请使用“with”语句确保文件正确关闭,并在迭代文件以获取行时,使用循环而非使用“f.readline()”。 - Gareth Latty
@jedwards 当文本文件是Unicode时,cat命令无法正常工作。 - Avi Cohen
实际分析 https://waymoot.org/home/python_string/ - nu everest
12个回答

0
def concatFiles():
    path = 'input/'
    files = os.listdir(path)
    for idx, infile in enumerate(files):
        print ("File #" + str(idx) + "  " + infile)
    concat = ''.join([open(path + f).read() for f in files])
    with open("output_concatFile.txt", "w") as fo:
        fo.write(path + concat)

if __name__ == "__main__":
    concatFiles()

-2
  import os
  files=os.listdir()
  print(files)
  print('#',tuple(files))
  name=input('Enter the inclusive file name: ')
  exten=input('Enter the type(extension): ')
  filename=name+'.'+exten
  output_file=open(filename,'w+')
  for i in files:
    print(i)
    j=files.index(i)
    f_j=open(i,'r')
    print(f_j.read())
    for x in f_j:
      outfile.write(x)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接