2016-11-27 10 views
1

このコードは、ファイルを入力として取り、すべての文字を小文字に変更し、アルファベット以外の文字を取り除くことを目的としています。次に、ファイル内の各単語の繰り返しを出力する必要があります。ファイルを読むときの構文エラー

#!/usr/bin/python 

import sys 

def main(argv): 
    try:  
     tf = open(sys.argv[1],"r") 
    except IOError: 
     print("The file ",tf," was not found") 
     sys.exit() 
data = tf.read() 
data.lower() 
data.replace("-"," ") 
validLetters = " abcdefghijklmnopqrstuvwxyz" 
cleanData = ''.join([i for i in data if i in validLetters]) 
frequency = {} 
words = [] 
words = cleanData.split() 
for x in words: 
    if frequency.has_key(x): 
     frequency[x] = frequency[x] + 1 
    else: 
     frequency[x] 
print sorted(frequency.values()) 
tf.close() 

これは、私は、コマンドラインで得るものです:

$ python -m py_compile q1_word_count.py drake.txt 
    File "drake.txt", line 1 
I Was A Teenage Hacker 
    ^
SyntaxError: invalid syntax 

は、「私は十代のハッカーた」テキストファイルの最初の行..です

+0

'python q1_word_count.py drake.txt' –

答えて

1

あなたのスクリプトは、おそらくすべてでありますそうだけど、あなたはそれを間違った方法で実行している。

あなたは

py_compileモジュールはソースファイル

モジュールからのバイトコードファイルを生成する機能を提供しpy_compileモジュールを有効にしていることを含め、コマンドラインからすべての引数を取りますあなたのテキストファイルは、明らかに構文エラーを見つけます。

ちょうどこのようにそれを実行します(あなたが最初にあなたのモジュールをコンパイルすることができます

python q1_word_count.py drake.txt 

:あなたは.pyc生成されたバイトコードファイルを実行することができ、そして、あなたの.pyファイルを変更するための再コンパイルのたびに必要になり、その場合にはpython -m py_compile q1_word_count.pyを、起動時には非常に小さなスピードが得られますが、実行時にはこれはバイトコードのコンパイルであり、動的コンパイルではありません。pypyを使用してください。

関連する問題