私は、次のコマンドをなぜgrepはPythonが見ることができないもの( ' r n')を見ていますか?
grep $'\r\n' tmp.txt | wc -l
を実行し、その結果として、私が手:
1000
だから、私は私のファイルが\r\n
を含む1000行が含まれていることを結論付けています。
out = []
finp = 'tmp.txt'
i = 0
for line in open(finp, 'rb').readlines():
if line[-2:] == '\r\n':
#if '\r\n' in line:
out.append(1)
else:
out.append(0)
print(sum(out))
そして私は、結果として0
を取得:今私はPythonで同じことをやろう。私はが\r\n
を含む行をチェックしないので、私はPythonでやっていることは、まったく同じではありません。その代わりに、それはが\r\n
とを終了した場合、私は確認してください。しかし、私は(私は私の場合にはラインが\r\n
で終わると信じているので)、それは違いの理由であるとは思いません。
私の質問は、その行に\r\n
の組み合わせが含まれているかどうかを確認する方法です。あなたが気づいたこととして、私はif '\r\n' in line
を実行しようが、それはエラーが発生します。
TypeError: a bytes-like object is required, not 'str'
第二に、私はそれが役立つことを確認していません。 Pythonがgrepに見えるものを「見ている」ことを確かめるために何かを行う必要がありますか?
はなぜファイルはバイトモードで開かれていますか?バイトオブジェクトと文字列を比較しています。 –
これは私がバイトモードで開く理由です:https://stackoverflow.com/questions/13953639/check-carriage-return-is-there-in-a-given-string – Roman
それから、 'b '\ r \代わりにn''。 –