我如何在Python中命名一个外部命令,就好像我把它写在一个<unk>或命令中?
当前回答
使用副过程。
或者一个非常简单的命令:
import os
os.system('cat testfile')
其他回答
还有不同的方式来处理返回代码和错误,你可能想打破输出,并提供新的输入(在预期类型的风格)。或者你将需要重新引导标准输入,标准输出和标准错误运行在不同的tty(例如,当使用GNU屏幕)。
因此,这里是我们写的Python模块,可以处理你想要的几乎任何东西,如果没有,它是非常灵活的,所以你可以轻松地扩展它:
它不单独工作,需要一些我们的其他工具,并在过去的几年里获得了很多专门的功能,所以它可能不是一个下降的替代品,但它可以给你很多关于如何运行命令的Python内部工作以及如何处理某些情况的想法。
您可以尝试使用 os.system() 运行外部命令。
例子:
import os
try:
os.system('ls')
pass
except:
print("Error running command")
pass
在示例中,脚本输入OS并试图运行在OS.system()中列出的命令。如果命令失败,那么它将打印“错误运行命令”而没有脚本因错误而停止。
是的,只是如此简单!
最简单的方式运行任何命令,并获得结果:
from commands import getstatusoutput
try:
return getstatusoutput("ls -ltr")
except Exception, e:
return None
与标准图书馆
使用子过程模块(Python 3):
import subprocess
subprocess.run(['ls', '-l'])
但是,更复杂的任务(管道,输出,输入等)可以是无聊的构建和写作。
注意 Python 版本: 如果您仍然使用 Python 2, subprocess.call 以类似的方式运行。
ProTip: shlex.split 可以帮助您打破运行命令、呼叫和其他子过程功能,如果您不希望(或您不能!)以列表的形式提供它们:
import shlex
import subprocess
subprocess.run(shlex.split('ls -l'))
与外部依赖
如果你不注意外部依赖,使用铅:
from plumbum.cmd import ifconfig
print(ifconfig['wlan0']())
它是最好的子处理器. 它是跨平台,即它在Windows和Unix类似的系统上运行。
另一个受欢迎的图书馆是:
from sh import ifconfig
print(ifconfig('wlan0'))
然而,sh下降了Windows支持,所以它不像它以前那样令人惊叹。
import os
cmd = 'ls -al'
os.system(cmd)
如果你想返回命令的结果,你可以使用os.popen. 但是,这是由于版本 2.6 有利于子过程模块,其他答案已经覆盖得很好。