【问题标题】:How does subprocess.call differ from os.systemsubprocess.call 与 os.system 有何不同
【发布时间】:2011-09-07 09:20:09
【问题描述】:

我有一个 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,但我无法解决。任何帮助将不胜感激,谢谢。

【问题讨论】:

标签: python subprocess os.system


【解决方案1】:

不同之处在于os.system 默认在子shell 中执行,而subprocess.call 没有。尝试使用shell=True

【讨论】:

  • 问题是没有rd.exe,rd是由cmd.exe实现的,所以必须在子shell中使用才能工作。我用os.rmdir(os.path.join(dirname, name))替换我的电话
猜你喜欢
  • 2019-03-23
  • 2018-08-17
  • 2013-01-17
  • 1970-01-01
  • 2015-05-20
  • 2018-01-02
  • 1970-01-01
  • 2021-01-30
  • 2013-09-15
相关资源
最近更新 更多