0

TextWrangler から STDIN を取得し、行ごとに何かを行う Python スクリプトを作成しています。Textwrangler では、ドラッグ アンド ドロップを使用して複数のテキスト ファイルを結合します。問題は、ドキュメントが ^Z (0x1A) 文字を保持していることです。これは、私の Python スクリプトが EOF インジケーターとして解釈しています。その結果、私のスクリプトは、多くの結合されたテキスト ドキュメントの最初のもの (最初の EOF 文字まで) しか「認識」しません。

私はバイナリモード、バッファなどでの読み取りについて調査して読みましたが、私はこの種のものの完全な初心者であり、それらのアイデアを実装する方法を理解できません。readlines() が EOF を探して停止するようです。どうすればそれを防ぐことができますか?

これが私のコードです:

import sys

for line_number, line in enumerate(sys.stdin.readlines()):
    if len(line) > 4:  # Blank lines are skipped
        if line.split()[0].isdigit():  #Determine if the line begins with an EVENT NUMBER
            print line.split()[7]
4

1 に答える 1

0

オプション 1: Python の外部でソース ファイルを生成しているため、TextWrangler の後にステップを追加して、問題のある文字を削除します。私は sed と grep の大ファンになりました。ポートは Windows で利用でき、*nix でネイティブに利用できます。

オプション 2: TextWrangler でファイルを修正します。

オプション 3: Textwrangler の手順を Python スクリプトに変換し、問題を完全に回避します。

于 2014-01-22T04:54:54.333 に答える