使用python运行命令行[重复]
Posted
技术标签:
【中文标题】使用python运行命令行[重复]【英文标题】:Use python to run a command line [duplicate] 【发布时间】:2014-07-18 10:58:27 【问题描述】:我想运行一个位于 C 中的程序,该程序可以使用命令行运行,如下所示
tclsh oommf.tcl avf2odt -average space -axis z -onefile <filename>.txt -headers none -ipat *.omf
这是我唯一需要在命令行中输入的内容。
如何使用 python 运行它?
请与问题非常相关。我见过很多答案,例如:您可以使用“子流程”来实现它。但是,它们都没有真正解决问题。
【问题讨论】:
请详细说明您的尝试。subprocess
与问题非常相关。
请详细说明这个问题和your previous question 的答案如何不能解决您的问题。看来你遗漏了很多细节。
大家好,感谢您的建议(和一些批评者)为了说明我的问题,我希望实现的是仅使用 python 来运行命令,如上面的代码中所写,可以运行在命令行中。如果这还不够指定,我将列出所有过程: 1 打开命令行 2 键入我上面写的行 3 按 Enter 执行 这就是我现在想要在 Python 中实现的全部。我自己搜索了一个解决方案,如下 import os os.system("您可以使用subprocess
模块。
import subprocess
subprocess.call(["tclsh", "oommf.tcl", "avf2odt", "-average", "space", "-axis", "z", "-onefile", "<filename>.txt", "-headers", "none", "-ipat", "*.omf"])
见https://docs.python.org/2/library/subprocess.html#subprocess.call
【讨论】:
这其实是不正确的;您将在列表中传递 单独的参数,而不是一个长字符串。 你是对的;编辑它。 更令人惊讶的是,您的答案之前被标记为已接受..【参考方案2】:这应该可以解决问题(将进程的打印输出作为字符串返回)
import subprocess
output = subprocess.check_output("tclsh oommf.tcl avf2odt -average space -axis z -onefile <filename>.txt -headers none -ipat *.omf", shell=True)
如果您想要子进程的返回码(例如检查成功时是否为 0),请使用
import subprocess
return_code = subprocess.call("tclsh oommf.tcl avf2odt -average space -axis z -onefile <filename>.txt -headers none -ipat *.omf", shell=True)
【讨论】:
不要使用shell=True
,将参数拆分为单独的字符串列表可以让您完全避免使用额外的shell进程。以上是关于使用python运行命令行[重复]的主要内容,如果未能解决你的问题,请参考以下文章
用于包装嘈杂的python脚本并使用sed删除特定行的shell命令问题[重复]