Python 2.5.2を使用して次のことに気づきました(2.7を使用しても発生しません)。
#!/usr/bin/python
import sys
for line in sys.stdin:
print line,
出力:
$ echo -e "one\ntwo\nthree" | python test.py
$ one
$ two
$ three
予想通り。subprocess
ただし、このスクリプトにインポートすると、次のようになります。
#!/usr/bin/python
import sys
import subprocess
for line in sys.stdin:
print line,
出力:
$ echo -e "one\ntwo\nthree" | python test.py
$ two
$ three
出力の最初の行はどうなりましたか?
アップデート:
問題の根本を発見したのではないかと思います。に名前の付いたファイルがありtime.py
ましたcwd
。time.pyc
インポートされたスクリプトを実行するたびにAが作成されており、これもインポートされているsubprocess
ことを示してい./time.py
ます。.pyc
およびtime.py
ファイルを削除すると、スクリプトは正常に実行されます。subprocess
しかし、なぜ輸入によって./time.py
も輸入されるのかという疑問がまだあります。
私はそれをさらに正確な線に絞り込み、それtime.py
が奇妙な振る舞いを引き起こします。作業ディレクトリとファイルの内容を、出力に影響するものだけに削除しました。
test.py
#!/usr/bin/python
import sys
import subprocess
for line in sys.stdin:
print line,
time.py
#!/usr/bin/python
import sys
for line in sys.stdin:
hour = re.search(r'\b([0-9]{2}):', line).group(1)
test.py
任意の種類の入力で実行すると、出力の最初の行が省略さtime.pyc
れて作成されます。