我一直在寻找,虽然我发现很长很复杂(很多我不需要的功能)关于如何简单地让python让linux使用cat函数将文件连接到单个文件。
从我的阅读中可以看出子进程就是这样做的方法。 这是我的,但显然不起作用:(
subprocess.call("cat", str(myfilelist[0]), str(myfilelist[1]), str(myfilelist[2]), str(myfilelist[3]), ">", "concatinatedfile.txt"])
以上假设:
myfilelist[]
上面的列表有4个文件名+路径作为列表;例如,列表中的一个项目是“mypath / myfile1.txt”
我也会采用非子流程(但很简单)的方法
答案 0 :(得分:4)
如果你想使用cat和重定向>你必须调用一个shell,例如通过system:
from os import system
system("cat a.txt b.txt > c.txt")
但是你必须注意代码注入。
答案 1 :(得分:4)
因为>
是shell函数,所以您需要执行shell=True
subprocess.call("echo hello world > some.txt",shell=True)
...至少在Windows中工作
或者你可以像
那样做一些事情with open("redirected_output.txt") as f:
subprocess.call("/home/bin/cat some_file.txt",stdout=f)
答案 2 :(得分:1)
见question。他的解决方案似乎简洁易懂,我会在这里发布:
filenames = ['file1.txt', 'file2.txt', ...]
with open('path/to/output/file', 'w') as outfile:
for fname in filenames:
with open(fname) as infile:
outfile.write(infile.read())