0

これは、実践的なプログラミングから得た、私が取り組んでいるコードです。

 import sys

def process_file(filename):
 '''Open, read, and print a file.'''

 input_file = open(filename, "r")
 for line in input_file:
  line = line.strip()
  print line
 input_file.close()
 if __name__ == "__main__":
  process_file(sys.argv[1])

このモジュールを IDLE にインポートし、process_file() を介してテキスト ファイル引数を渡すと、次のエラーが表示されます。

    Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    process_file("data.txt")
  File "C:\Python26\read_file_2.py", line 14, in process_file
    process_file(sys.argv[1])
IndexError: list index out of range

このエラーを受信せずにこのプログラムを動作させるにはどうすればよいですか? どんな助けでも大歓迎です。

4

2 に答える 2

0

あなたは移動する必要があります

if __name__ == "__main__":
    process_file(sys.argv[1])

機能外process_file。IDLE にインポートするときprocess_fileは、 が利用可能であることを確認し、ファイル名をそれに渡します。

于 2010-08-03T13:32:05.620 に答える
0

を持っているようです

if __name__ == "__main__":
  process_file(sys.argv[1])

残りの定義と同じインデント レベルでブロックするため、別のモジュールからprocess_file呼び出したときに実行されます。process_fileそれがあなたの問題を引き起こしているのではないかと思います-インデントを解除してifdef.

于 2010-08-03T13:32:21.443 に答える