gpt4 book ai didi

python - 如何在Python中调用自定义的命令行函数

转载 作者:行者123 更新时间:2023-11-30 23:24:46 26 4
gpt4 key购买 nike

我正在尝试在 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 但找不到有用的信息。

最佳答案

  1. 一种方法是先读取 ./bash_profile。正如 @anishsane 指出的,你可以这样做:

    vpn=subprocess.Popen(["bash"],shell=True,stdin= subprocess.PIPE)
    vpn.communicate("source /Users/YOUR_USER_NAME/.bash_profile;vpn-connect")
  2. 或使用 os.system

    os.system('bash -c "source /Users/YOUR_USER_NAME/.bash_profile;vpn-connect"')
  3. 或者尝试一下

    import subprocess
    subprocess.call(['vpn-connect'], shell = True)
  4. 尝试一下

    import os
    os.system('bash -c vpn-connect')

    根据http://linux.die.net/man/1/bash

关于python - 如何在Python中调用自定义的命令行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23290899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com