从os.popen('cmd')。read()接收长度为0的字符串

时间:2018-07-20 20:05:10

标签: python-2.7 automator

我正在使用一个名为“ ideviceinfo”(请参阅​​https://github.com/libimobiledevice)的命令行工具,以帮助我从每天使用的iOS设备中快速获取串行,IMEI和电池运行状况信息。它的执行速度比Apple自己的“ cfgutil”工具快得多。

据了解,我已经能够开发出比以下PyCharm(我的主IDE)中所示的脚本更复杂的脚本,以便为各个变量分配特定的值等,然后使用诸如pyclip和pyautogui之类的内容来帮助自动粘贴这些都放在我们合作的数据库应用程序的字段中。我也已经能够在Mac OS X终端和python shell中使用脚本的简化版本,而不会打ic。

我希望使用AppleScript来使运行脚本尽可能简单。

当我尝试使用Applescript的“ do shell script'python script.py'”时,当我调用“ ideviceinfo”时,我只会得到长度为零的字符串。当我尝试使用“ python script.py”的“运行Shell脚本”组件构建Automator应用时,会发生完全相同的事情。

我已尽力找出问题所在。在脚本中调用其他更基本的命令(例如“ date”)时,它们将返回有效字符串。

    #!/usr/bin/python
    import os

    ideviceinfoOutput = os.popen('ideviceinfo').read()
    print ideviceinfoOutput
    print len (ideviceinfoOutput)

    boringExample = os.popen('date').read()
    print boringExample
    print len (boringExample)

我正在运行Mac OS X 10.11,并且在Python 2.7上运行

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为我已经设法自己解决了。我只需要更清楚地说明“ ideviceinfo”二进制文件(我希望这是正确的术语)在计算机上的存储位置。

将一行代码更改为

    ideviceinfoOutput = os.popen('/usr/local/bin/ideviceinfo').read()

,一切似乎都还可以。