python使用子进程连接文件

时间:2013-06-27 23:13:08

标签: python linux concatenation

我一直在寻找,虽然我发现很长很复杂(很多我不需要的功能)关于如何简单地让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”

我也会采用非子流程(但很简单)的方法

3 个答案:

答案 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())