2016-11-29 3 views
0

エラーがある場合は、サブプロセスを呼び出して文字列を返します。 コード例:サブプロセスを終了するときに文字列に文字を追加しました

プロセスを呼び出す:

def read_plan_with_break(): 
    comand = " python script.py " 
    proc = subprocess.Popen(comand.split(), shell=False, stdout = subprocess.PIPE, stderr= subprocess.PIPE) 
    if proc.wait() != 0: 
     output, err = proc.communicate() 
     print (err) 
     return "Error in subprocess" 
    return True 

サブプロセスを終了するとき:

def fatal_error(): 
    print("Some message", file=sys.stderr) 
    exit(1) 

私の問題は、stderr出力があるということである:b'Some message\r\n' 私は\r\nstripとを消去することができますなぜ冒頭にbがあり、最初と最後に'があるのか​​分かりません。

これがなぜ起こるのか誰にも分かりますか?

EDIT: 私はb'を取り除くためにerr.split()[2:-1]を試してみましたが、それは私がダウン票を取得する場合、私はより良い質問を改善して行うことができます説明してくださいSome message

の開始を遮断将来

+0

を返します。文字列の部分ではなく部分文字列で 'b'を取り除くことはできません。 [ここ]を参照(http://stackoverflow.com/questions/22824539/what-is-a-python-bytestring) –

+0

err.decode()私はそれを受け入れることができそう答え、 – TheClonerx

+0

@TheClonerxはありがとうお手伝いをします:) – kemis

答えて

2

errはバイト文字列である、あなたは(err.decodeで最初にそれをデコードしなければならない)、これは、それはちょうどそのバイト文字列を意味し、文字列

関連する問題