1

によって呼び出されたコマンドの出力を比較しようとしていますsubprocess.check_output()。これをWindowsで実行しているので\r\n、出力にも'sが表示されます(これは良いことです)。

次に、そのコマンドからの出力をテキストファイルと比較します。は'open()を保持しないため、これは失敗します。\rこれが私がこれまでに得たものです:

try:
    output = subprocess.check_output(paramList, universal_newlines=False,
                                     stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as err:
    output = err.output
    errorCode = err.returncode

with open(EMCMD_INCORRECT_PARAMS, 'r') as fd_usage:
    usageLines = fd_usage.read()
    usage = True if usageLines == output else False

を保存するため\rの提案はありますか?ありがとう!

4

1 に答える 1

0

Python 3 では、open はnewlines改行トランスレータの動作を制御するための引数を取ります (ドキュメントを参照してください)。この引数の値を''にすると、改行変換が無効になります。


Python 3 を使用できない場合、によって開かれたファイル オブジェクトopennewlineは、元のタイプの改行を含む属性があるため、これを使用して元のコンテンツを取得できます。

with open(EMCMD_INCORRECT_PARAMS, 'r') as fd_usage:
    usageLines = fd_usage.read().replace('\n', fd_usage.newline)

readファイルの元のコンテンツを取得するために返されたものを後処理するという考えが気に入らない場合は、バイナリ モードも解決策になる可能性があります。

于 2012-10-31T15:41:54.910 に答える