我刚才在某个地方看过这个,但似乎无法找到它.我试图找到一个命令,将在终端中执行命令,然后输出结果.
例如:脚本将是:
command 'ls -l'
Run Code Online (Sandbox Code Playgroud)
它将导致在终端中运行该命令的结果
Uku*_*kit 161
做这件事有很多种方法:
一种简单的方法是使用os模块:
import os
os.system("ls -l")
Run Code Online (Sandbox Code Playgroud)
使用子进程模块可以实现更复杂的事情:例如:
import subprocess
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE)
output = test.communicate()[0]
Run Code Online (Sandbox Code Playgroud)
小智 29
我更喜欢使用子进程模块:
from subprocess import call
call(["ls", "-l"])
Run Code Online (Sandbox Code Playgroud)
原因是如果你想在脚本中传递一些变量,这给出了非常简单的方法,例如采用以下部分代码
abc = a.c
call(["vim", abc])
Run Code Online (Sandbox Code Playgroud)
小智 10
import os
os.system("echo 'hello world'")
Run Code Online (Sandbox Code Playgroud)
这应该有效。我不知道如何将输出打印到 python Shell 中。
对于 python3 使用子进程
import subprocess
s = subprocess.getstatusoutput(f'ps -ef | grep python3')
print(s)
Run Code Online (Sandbox Code Playgroud)
您还可以检查是否有错误:
import subprocess
s = subprocess.getstatusoutput('ls')
if s[0] == 0:
print(s[1])
else:
print('Custom Error {}'.format(s[1]))
# >>> Applications
# >>> Desktop
# >>> Documents
# >>> Downloads
# >>> Library
# >>> Movies
# >>> Music
# >>> Pictures
Run Code Online (Sandbox Code Playgroud)
import subprocess
s = subprocess.getstatusoutput('lr')
if s[0] == 0:
print(s[1])
else:
print('Custom Error: {}'.format(s[1]))
# >>> Custom Error: /bin/sh: lr: command not found
Run Code Online (Sandbox Code Playgroud)
您还应该查看 commands.getstatusoutput
这将返回一个长度为 2 的元组。第一个是返回整数(0 - 当命令成功时)第二个是整个输出,将在终端中显示。
对于 ls
import commands
s=commands.getstatusoutput('ls')
print s
>> (0, 'file_1\nfile_2\nfile_3')
s[1].split("\n")
>> ['file_1', 'file_2', 'file_3']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
231718 次 |
最近记录: |