mkdir和touch在同一个子进程中不起作用

时间:2017-03-25 18:55:08

标签: python bash

导入子流程

def execCommand(cmd):
    try:
        proc = subprocess.Popen(
            cmd,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE)
        out, err = proc.communicate()
        return proc.returncode, out, err
    except:
        print "failed"
        return -1, '', ''

if __name__ == '__main__':
    res, out, error = execCommand(["mkdir", "-p", "/tmp/newdir/", "&&", "touch", "/tmp/newdir/myfile.txt"]) 

上面的touch命令生成myfile.txt作为目录而不是文件,有人可以解释原因吗?

1 个答案:

答案 0 :(得分:0)

根本不要使用subprocess。您运行的外部命令包装了Python可以调用的相同库调用。

import os
os.makedirs("/tmp/newdir")
with open("/tmp/newdir/myfile.txt", "w"):
    pass

如果您确实需要临时文件,请考虑使用tempfile模块来安全地创建文件。