2016-06-27 4 views
0

私はstringsコマンドをPythonスクリプトの中で実行しようとしています。私はそれをしばらく働いていたが、不思議なことに、subprocess.Popenをもう使用すると何も返されない。 Pythonシェルでは、端末Python 2.7のサブプロセスは何も返しません。正確なコマンドはコンソールで動作します

strings /path/to/.bashrc 
# You may uncomment the following lines if you want `ls' to be colorized: 
# export LS_OPTIONS='--color=auto' 
# eval `dircolors` 
# alias ls='ls $LS_OPTIONS' 
# alias ll='ls $LS_OPTIONS -l' 
# alias l='ls $LS_OPTIONS -lA' 
# Some more alias to avoid making mistakes: 
# alias rm='rm -i' 
# alias cp='cp -i' 
# alias mv='mv -i' 
shopt -u -o history 

から呼び出され

import subprocess 
proc = subprocess.Popen(['strings', '/path/to/.bashrc'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) 
out, err = proc.communicate() 

秒何も返さない

。どうして? subprocess documentationから

+0

あなたは真のシェルを=使用しているのはなぜ? –

答えて

2

:実行するプログラムとして、シェルを使用するかどうかを指定します(デフォルトはfalse)

シェル引数。 shellがTrueの場合、argsをシーケンスではなく文字列として渡すことをお勧めします。

は、使用してみてください:

proc = subprocess.Popen("strings /path/to/file", ...) 
+0

入力の正しい形式はどのようになりますか? – Ares

+0

私はそれに応じて答えを編集しました。 – ynimous

+0

私は既知のテキストファイル(output.txt、ターミナルを介して確認済み)でこれを実行すると、 '' [Errorno 2]はありません。そのようなファイルやディレクトリはありません。 '' – Ares

関連する問題