【问题标题】:running a binary file in python2.7 on linux在linux上的python2.7中运行二进制文件
【发布时间】:2013-05-19 20:27:24
【问题描述】:

我在 python 中使用 Popen 传递多个变量时遇到问题:

#!/usr/bin/env python
import sys
import os
import shlex, subprocess

a = raw_input("Enter a number:")
b = raw_input("Enter a file:")
c = raw_input("Enter dir to search:")

subprocess.Popen(['/bin/sh', "./catnum.bin", "-m",  a, "--remove",  "-o results.txt", b, c])

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    你可以使用 call 代替:

    from subprocess import call
    call(["cactnum.bin", "-m",a, "--remove",  "-o results.txt", b, c])
    

    但是根据 J.F. Sebastian 的评论

    真正的问题是invalid/unnecessary /bin/sh call b) "-o results.txt" 应该写成"-o", "results.txt" (2 args),即正确的调用是:subprocess.check_call(["./catnum.bin", "-m", a, "--remove", "-o", "results.txt", b, c]) if catnum.bin is executable

    【讨论】:

    • @Lucas: subprocess.call() 只是 subprocess.Popen().wait()(你已经混合了 subprocessos 模块 -- Popen() 没有被弃用)。真正的问题是a)无效/不必要的/bin/sh调用b)"-o results.txt"应该写成"-o", "results.txt"(2个参数),即正确的调用是:subprocess.check_call(["./catnum.bin", "-m", a, "--remove", "-o", "results.txt", b, c])如果catnum.bin是可执行的
    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 2012-07-08
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多