2016-11-27 92 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 

(你可以先編譯模塊:python -m py_compile q1_word_count.py,在這種情況下,你可以運行.pyc生成的字節碼文件,並改變你的.py文件將需要重新編譯每次如果你想動態編譯,使用pypy

相關問題