【发布时间】:2016-07-28 09:58:43
【问题描述】:
我有一个 python 脚本,它在建立 PPP 连接时由 Linux 上的 ppp 程序调用的 if-up 脚本运行。 python脚本基本上是调用命令行程序,解析结果并返回:
import subprocess
result = subprocess.check_output(["fw_printenv", "serialnr"])
result = # some operation
return result
虽然当我从命令行手动运行 python 脚本(例如python script.py)时,这段代码可以 100% 正常工作,但当它由 PPP 从 if-up 运行时,它根本不起作用。调用subprocess.check_output 时会引发异常:[Errno 2] No such file or directory: 'fw_printenv'。
只有将代码更改为:
result = subprocess.check_output("fw_printenv serialnr", shell=True)
为什么?
【问题讨论】:
-
通过使用 shell,您正在使用系统的 PATH 变量。这很可能是第一个版本找不到可执行文件的原因
标签: python shell python-3.x terminal subprocess