1

私は次のようなコードを持っています:

proc = subprocess.Popen(["/path/to/program", '-c', '-', ran_opt_get_ap], stdout=subprocess.PIPE) 

"/path/to/program", '-c', '-'そして、簡単に変更できるように、変数に抽出したいと思います。cmd_here に対していくつかの異なる構文を試しましたが、さまざまなエラーが発生しましたが、正しい方法は何ですか? これが私が試した例です:

cmd_here = "/jffs2/usbflash0/ran/rancli -c -"
proc = subprocess.Popen([cmd_here, ran_opt_get_ap], stdout=subprocess.PIPE) 

これは回避したい場合にのみ機能しshell=Trueます。どの構文を使用すればよいですか? 私はそれをリストに入れましたが、それについて不平を言いました。

4

2 に答える 2

2

動作するはずの何か(ただし、テストされていません):

constant_cmd_part = ["/path/to/program", "-opt", "-more_opt"]
proc = subprocess.Popen(constant_cmd_part + [variable_part],
                        stdout=subprocess.PIPE)

基本的に、subprocess.Popen は [binary, args...] のリストである初期引数を必要とし、定数部分のリストを可変部分のリストと連結して構築します。

于 2013-04-10T11:19:39.373 に答える
2

関数を使用splitして、適切なリストを作成できます。

cmd_here = "/jffs2/usbflash0/ran/rancli -c -"
# split string to a list
args = cmd_here.split()
args.append(ran_opt_get_ap)
proc = subprocess.Popen(args, stdout=subprocess.PIPE)

分割コマンドの結果:

cmd_here = "/jffs2/usbflash0/ran/rancli -c -"
In [2]: cmd_here.split()
Out[2]: ['/jffs2/usbflash0/ran/rancli', '-c', '-']
于 2013-04-10T11:20:03.823 に答える