2017-05-16 14 views
1

これは私の最初の質問です。Pythonは外部Cプログラム呼び出しの改行文字で文字列を出力します

私はPython3からCプログラムを呼び出しています。私の変数 で取り込まれた文字列は、改行文字を処理する代わりに改行文字を出力します。

この欲しい:

こんにちは 世界は私が手: b'hello \ nworld」私はこのCプログラムはfind.cと呼ばれている

int main(int argc, char *argv[]){ 

     printf("%s:\n%s\n\n",argv[1],argv[2]); 
     return 0; 
    } 

実行さ/蘭/ Python3で処理:

import sys 
    import subprocess 

    user = sys.argv[1] 
    item = sys.argv[2] 

    out = subprocess.check_output(["./find", user, item]) 
    print(out) 

もう一度、「out」という文字列には、 という改行のように扱う代わりに、「\ n」が含まれています。

私はuniversal_newlines = trueとend = ""をcheck_out()に追加しようとしました。

私はPopen()とcall()を使ってみましたが、どちらも "\ n"を保持しています。

最後の注意:この文字列をhtmlのテキストエリアに出力しています。そして、はい、私はb ''が実際に文字列の一部ではないことを知っています。

乾杯!

答えて

1

EHHHH、私はそれを理解しました。興味がある人は次のようにしました:

print(subprocess.check_output(["./find",user,item],universal_newlines=True)) 

私は実際にuniversal_newlines = Trueを排他的に使ってみませんでした。

私の最初に受け入れられた答えを見てください!

0

キャリッジリターンと改行を取り除く必要があります。

import sys 
import subprocess 

user = sys.argv[1] 
item = sys.argv[2] 

out = check_output(["./find", user, item]).strip() 
print(out) 
+0

お返事ありがとうございます。しかし、textarea htmlには出力がありませんでしたが、私はそれを解決しました。私の答え、歓声を参照してください! – boisterousk

0

これを試してください。サブプロセスがバイト文字列を返す場合は、ASCII文字として出力します。

print(out.decode('ascii')) 
関連する問題