【问题标题】:Using the subprocess module of Python to run a program with arguments from the command line使用 Python 的 subprocess 模块从命令行运行带有参数的程序
【发布时间】:2014-09-30 13:19:48
【问题描述】:

我正在使用 Python 的 subprocess 模块中的 call 方法在终端中运行命令

subprocess.call(['cmd', 'pybot', 'AdminTests', '-v', 'LOGIN URL:_mylink', '-d', '.\\results'])

但是,我的通话目前在其自身内部打开了一个终端,基本上是重新打开,然后什么也不做。为什么它不执行我的其余命令?我尝试将完整命令作为单个字符串传递,我已将 shell 参数添加到我的调用中。我尝试了我能想到的一切,但没有什么能让我的 Python 脚本完整运行此命令。

为什么我的命令没有完整运行?

编辑:代码的输出只打开命令行,然后什么都不做。
图片:http://imgur.com/S82Hqjk

【问题讨论】:

    标签: python python-2.7 command-line subprocess


    【解决方案1】:

    '\r' 表示回车符。您需要转义 \ 才能真正理解它。

    subprocess.call(['cmd', 'pybot', 'AdminTests', '-v', 'LOGIN URL:_mylink', '-d', '.\\results'])
    

    或使用原始字符串文字:

    subprocess.call(['cmd', 'pybot', 'AdminTests', '-v', 'LOGIN URL:_mylink', '-d', r'.\results'])
    

    顺便说一句,如果.\表示当前目录,可以省略。

    【讨论】:

    • 恐怕转义字符没有帮助,但我已经修改了我的代码:(
    • @Leon,或者['pybot', ...](根本没有cmd
    • 然后我得到错误[ ERROR ] Parsing '-v' failed: Data source does not exist.,这更好,但仍然不好。为什么要尝试将参数读取为数据源? 编辑:您的两个更改都会导致相同的错误
    • @Leon,我不知道pybot。顺便说一句,当您在命令行中而不是通过 python 发出命令时,命令本身是否有效?
    • 不,这是一个pybot问题!非常感谢您解决了我的问题。 :)
    猜你喜欢
    • 2014-09-18
    • 2016-11-08
    • 1970-01-01
    • 2018-02-12
    • 2011-04-13
    • 2015-06-02
    • 2014-04-27
    • 2012-11-12
    • 1970-01-01
    相关资源
    最近更新 更多