我正确使用python的subprocess.call吗?

时间:2012-11-22 06:01:28

标签: python subprocess

我正在尝试从Python代码中创建一系列tar文件。作为一种做法,我有一个子目录 - 'O',它包含我想要tar的文件。当我尝试输入

tar -cf O.tar ./O

从命令行开始,事情有效。但是,当我进入Python解释器并输入

import subprocess
subprocess.call(["tar","-cf O.tar ./O"])

我收到以下错误:

tar: Cowardly refusing to create an empty archive

这有意义吗?我试过了

import os
os.listdir(".")

为了确保我仍然可以在Python shell中看到我的“O”子目录,我可以。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:3)

也许

import subprocess
subprocess.call(["tar","-cf", "O.tar", "./O"])

答案 1 :(得分:-1)

它将运行:

import subprocess
import sys
proc = subprocess.Popen(["tar","-cf O.tar ./O"],stdin=subprocess.PIPE)
proc.communicate()

如果可以执行其他命令或程序,请使用sys.executeable()