如何使用os.system获取cmd的响应?
如何使用os.system获取cmd的响应?
这个问题已经有了答案:
我正在尝试通过ssh远程登录到服务器并获取命令输出,使用以下命令。
os.system('ssh user@host " ksh .profile; cd dir; find . -type f |wc -l"')
该命令的输出结果是14549 0。
为什么输出结果中有个零?
是否有办法将输出结果存储到变量或列表中? 我尝试将输出结果分配给变量和列表,但是变量中只有0。我使用的是python 2.7.3。
admin 更改状态以发布 2023年5月24日
关于这个问题,SO网站有许多好的链接。可以先尝试在Python中运行shell命令并捕获输出 或者 将os.system的输出赋值给变量并防止其显示在屏幕上。简单来说:
import subprocess direct_output = subprocess.check_output('ls', shell=True) #could be anything here.
要谨慎使用shell=True标志:
来自官方文档的警告:
警告
如果与不受信任的输入相结合,使用shell=True调用系统shell可能会带来安全风险。有关详细信息,请参见Frequently Used Arguments下的警告。