2016-11-28 27 views
0
に改行まで私は、フォーマット\ nを

次のことができます。どのように私はこのコード行からの出力をプリントアウトしようとしているのPython

subprocess.check_output('cmd.exe /K cmd',shell=False) 

しかし、出力はこの

**Microsoft Windows [Version 6.3.9600]\r\n(c) 2013 Microsoft Corporation. All rights reserved.\r\n\r\nC:\\Users\\19leungc8\\Desktop>\r\nC:\\Users\\19leungc8\\Desktop>** 
のようなものですこれに代えて

:必要に応じて

**Microsoft Windows [Version 6.3.9600]** 

**(c) 2013 Microsoft Corporation. All rights reserved.** 

私はより多くの情報を提供します。

答えて

1

subprocess.check_outputためのドキュメントとしては説明しています

デフォルトでは、この関数は戻りますデータを符号化されたバイトとして返します。出力データの実際のエンコーディングは、呼び出されるコマンドに依存することがあります。そのため、テキストへのデコードは、しばしばアプリケーションレベルで処理する必要があります。

戻り値は、bytesオブジェクトです。このオブジェクトには、コマンドの出力がエンコードされたバイトとして格納されています。オブジェクトを印刷するときにこれを見ることができます。リテラルは、引用符の前にbを持っているバイトの両方に印刷する場合とreprが印刷されている場合:

>>> x = b'foo bar' 
>>> print(x) 
b'foo bar' 
>>> x  # basically the same as print(repr(x)) 
b'foo bar' 

このうち、適切な文字列を取得するためには、デコードbytes.decode()を使用してバイトオブジェクトに必要です。バイトを文字列にデコードするには、データがエンコードされているエンコードを知る必要があります。非常に一般的に、これはutf-8になります。この場合、引数を渡す必要はありません。

>>> x.decode() 
'foo bar' 
>>> print(x.decode()) 
foo bar 
+0

私は自分のコードを稼働させました。ご協力いただきありがとうございます –

2

あなたはそれについて心配する必要はありません。 \nは、文字列内の新しい行を意味します。 check_output()の内容を印刷すると、\nがコンソールの新しい行に置き換えられます。例えば:あなたのケースでは

>>> my_text = "1234\n\n1234" 
>>> my_text 
'1234\n\n1234' 
# ^value of `my_text` holds `\n` 

# on printing the `my_text`, `\n` is replaced with new line 
>>> print(my_text) 
1234 

1234 

が、あなたはそれが好きで実行する必要があります。

my_output = subprocess.check_output(...) 
print(my_output) 
+0

ありがとうございます。あなたの投稿の下で私の回答を読むことができますか? –

関連する問題