PythonでLinuxコマンドを実行します。popenの引数へのパスの追加
/usr/bin/myprogram --path "/home/myuser"
私はこれを試してみた:
path = "/home/myuser"
args = ['/usr/bin/myprogram', '--path ' + path]
proc = subprocess.Popen(args)
そして、この:これは、端末で動作
path = "/home/myuser"
args = ['/usr/bin/myprogram', '--path "' + path + '"']
proc = subprocess.Popen(args)
をしかし、パスの書式設定をmyprogram
受け付けません。私はシェルとして実行していないときにパスが異なって動作することを知っていますが、動作させることはできません。また、パスを二重引用符で囲むのではなく、一重引用符で囲んでみました。 Windows上でも動作するソリューションのボーナスポイント(異なるプログラムパスを使用していることは明らかです)。
編集:申し訳ありませんが、メモリからこれを書き出し、スラッシュの代わりにバックスラッシュを使用していました。実際のコードでは、スラッシュ(正しい)を使用していました。
import subprocess
import shlex
p = subprocess.Popen(shlex.split("/usr/bin/myprogram --path /home/myuser")
マインドスラッシュ( "/"):
あなたは 'args = ['\ usr \ bin \ myprogram'、 '--path'、path]'を試したことがありますか?私は以前は成功していましたが、Windows上で使用しました。 EDIT - '\\' – asongtoruin
を使ってバックスラッシュをエスケープする必要があるかもしれない '' subprocess.Popen( '/ usr/bin/myprogram --path "/ home/myuser"'、shell = True、stdout = subprocess.PIPE) .stdout.read() ' –
' ['/ usr/bin/myprogram'、 '--path'、path] 'を使わないのはなぜですか? –