作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 python 中调用自定义的命令行函数。我使用 /.bash_profile
中的苹果脚本定义了我的函数,如下所示:
function vpn-connect {
/usr/bin/env osascript <<-EOF
tell application "System Events"
tell current location of network preferences
set VPN to service "YESVPN" -- your VPN name here
if exists VPN then connect VPN
repeat while (current configuration of VPN is not connected)
delay 1
end repeat
end tell
end tell
EOF
}
当我在 bash
中测试 $ vpn-connect
时,vpn-connect
工作正常。我的 VPN 连接良好。
所以我创建了 vpn.py
,其中包含以下代码:
import os
os.system("echo 'It is running.'")
os.system("vpn-connect")
我使用 python vpn.py
运行它并得到以下输出:
vpn Choushishi$ python vpn.py
It is running.
sh: vpn-connect: command not found
这证明调用自定义函数与调用系统预定义的函数有一定的不同。我查看了 pydoc os 但找不到有用的信息。
最佳答案
一种方法是先读取 ./bash_profile。正如 @anishsane 指出的,你可以这样做:
vpn=subprocess.Popen(["bash"],shell=True,stdin= subprocess.PIPE)
vpn.communicate("source /Users/YOUR_USER_NAME/.bash_profile;vpn-connect")
或使用 os.system
os.system('bash -c "source /Users/YOUR_USER_NAME/.bash_profile;vpn-connect"')
或者尝试一下
import subprocess
subprocess.call(['vpn-connect'], shell = True)
尝试一下
import os
os.system('bash -c vpn-connect')
关于python - 如何在Python中调用自定义的命令行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23290899/
我是一名优秀的程序员,十分优秀!