Python:无法打开文件进行阅读

时间:2014-04-16 20:57:03

标签: python exception

我正在尝试从Windows命令行对文本文件运行程序(word_count.py)。 但是,它会抛出并读取文件异常。有人可以告诉我为什么吗?

这是py文件:

import sys
import re
import string

def Usage():
print "Usage:word_count.py [doc1] [doc2] ... [docN]"

if len(sys.argv) == 1:
Usage()
sys.exit()

for fn in sys.argv[1:]:
    try:
        with open(fn) as textf:
        word_map = {}
        total_cnt = 0

        # reads one line at a time
        for line in textf:
            line = line.strip()
            if not line:
                continue

            tempwords = line.split()

            for w in tempwords:
                w = re.sub('[%s]' % re.escape(string.punctuation), '', w)
                if w:
                    if w.lower() in word_map:
                        word_map[w.lower()] += 1
                    else:
                        word_map[w.lower()] = 1
                    total_cnt += 1
        print fn+' ------ total word count: '+str(total_cnt)

    output_f_name = 'word_count_'+fn
    with open(output_f_name, 'wb') as output:
        for ele in sorted(word_map.items(), key=lambda x:x[1], reverse=True):
            output.write('{}   {}\n'.format(str(ele[1]).rjust(6), ele[0].ljust(2)))
     except IOError:
        print 'Cannot open file %s for reading' % fn
        exit(1)

.py文件和.txt文件都位于我的桌面上,我使用以下命令从命令行运行程序:

C:\用户\我\桌面和GT; word_count.py [file.txt]

2 个答案:

答案 0 :(得分:2)

如果您的意思是在字面上用命令行上的方括号围绕文件名,那可能就是问题所在。尽管将参数视为列表,但它是推断的,您只需通过在其间包含空格来分隔列表项。

答案 1 :(得分:0)

您不应在命令行的文件名周围放置方括号。

请改用:

word_count.py file.txt

方括号通常用于表示参数在使用字符串中是可选的。