【问题标题】:Python 3: Using subprocess Instead Of os.systemPython 3:使用子进程而不是 os.system
【发布时间】:2012-03-15 15:53:18
【问题描述】:

我有一个名为variable 的字符串,需要执行subprocess 等效于os.system。我试图找到一种方法来做到这一点,但只找到了:

variable2 = subprocess.Popen(args, stdout=subprocess.PIPE)
print variable2.communicate()[0]

但是,我无法理解如何使用它。如何实现我的目标?

【问题讨论】:

标签: python python-3.x subprocess sys os.system


【解决方案1】:

该文档提供了几个旧式子流程创建功能的等价物。 os.system() 解释为here

【讨论】:

  • 还有 os.startfile() 的等价物吗?
  • 没有。 os.startfile() 是围绕 ShellExecute() 的特定于 Windows 的包装器。
【解决方案2】:
In [4]: os.system('uname -a')
Linux diego-workstation 3.0.0-16-generic #28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Out[4]: 0

In [8]: subprocess.call(['uname', '-a'])
Linux diego-workstation 3.0.0-16-generic #28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Out[8]: 0

【讨论】:

    【解决方案3】:

    查看subprocess.callsubprocess.check_callsubprocess.check_output 函数。如果您正在执行一个 shell 命令(如将提供给 os.system)而不是显式指定可执行文件和一系列参数,则可能需要传递 shell=True

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 1970-01-01
      • 2020-11-30
      • 2016-05-23
      • 2015-08-10
      • 2017-11-24
      • 2011-11-03
      • 1970-01-01
      • 2017-08-22
      相关资源
      最近更新 更多