subprocess.call与os.system有何不同

时间:2011-06-02 20:41:50

标签: python subprocess os.system

我有一个python脚本来安装/卸载一些常用的程序,它还可以在卸载后清理一些快捷方式/文件夹。我曾经使用这段代码删除文件夹

os.system('rd /S /Q "{0}\\{1}"'.format(dirname, name))

哪个工作得很好。我正在尝试将os.system的使用情况转换为subprocess.call,因此我将上述行更改为此

subprocess.call(['rd', '/S', '/Q', '{0}\\{1}'.format(dirname, name)])

但这会产生错误

The system cannot find the file specified (2)

我必须错误地使用subprocess.call但我无法解决它。任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:2)

不同之处在于,os.system默认情况下会在子shell中执行,而subprocess.call则不会。尝试使用shell=True