📅  最后修改于: 2023-12-03 15:04:18.964000             🧑  作者: Mango
在Python中,我们可以使用subprocess
模块来运行系统命令,并读取其输出。这在很多情况下非常有用,例如当我们需要执行某些命令并从其输出中提取信息时。下面是一个简单的例子:
import subprocess
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))
在上面的代码中,我们使用subprocess.run
方法来运行ls -l
命令,并将其输出通过stdout
参数传递给result
变量。然后,我们使用decode
方法将输出从字节串转换为字符串,并在控制台打印它。
如果你需要更多的控制,你可以使用Popen
类,它允许你更加灵活地控制进程的输入、输出和状态。下面是一个使用Popen
的例子:
import subprocess
process = subprocess.Popen(['ping', '-c', '1', 'google.com'], stdout=subprocess.PIPE)
while True:
output = process.stdout.readline().decode('utf-8')
if output == '' and process.poll() is not None:
break
if output:
print(output.strip())
print('Exit code:', process.poll())
在上面的代码中,我们使用Popen
方法来运行ping -c 1 google.com
命令,并将其输出通过stdout
参数传递给process
变量。接着,我们使用一个while
循环来读取进程的输出。readline
方法从输出中读取一行,并通过decode
方法将其从字节串转换为字符串。如果输出为空,且进程已经退出,则跳出循环。最后,我们使用poll
方法来获取进程的退出状态,并在控制台打印它。
总之,subprocess
模块提供了一个方便的方法来运行系统命令,并读取其输出。如果你需要更灵活的控制,你可以使用Popen
类。