subprocess.call和os.system有什么区别

3 投票
1 回答
3355 浏览
提问于 2025-04-16 18:51

我有一个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 个回答

3

这段话的意思是,os.system 默认是在一个子进程中执行命令,而 subprocess.call 则不是。如果你想让 subprocess.call 也在子进程中执行,可以试试加上 shell=True

撰写回答