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

相关问题