我知道我可以使用with语句打开多个文件。我的问题是我无法分开捕捉错误。我的函数有一个参数和一个可选参数。如果没有给出“regular”,它应该抛出一个IOError,但是如果没有给出可选参数(一个文件),那么它应该只返回一条警告消息,并继续运行。到目前为止,我提出了这个解决方案,我的问题是,可以将这两个文件打开,如下所示:使用codecs.open(file,'r','iso-8859-2')作为f,codecs.open (stopfile,'r','iso-8859-2')并单独检查错误?
import re
import codecs
def frequencyList(file, stopfile=''):
try:
with codecs.open(file, 'r', 'iso-8859-2') as f:
text = f.read()
frequentWords = []
if stopfile != '':
try:
with codecs.open(stopfile, 'r', 'iso-8859-2') as s:
for word in s:
frequentWords.append(word[:-2])
except:
pass
except IOError:
return 'File not found.'
text = re.sub(r'\W+', ' ', text).lower().split()
withoutFrequentWords = []
for word in text:
if word not in frequentWords:
withoutFrequentWords.append(word)
frequency = [withoutFrequentWords.count(word) for word in withoutFrequentWords]
dictionary = dict(zip(withoutFrequentWords, frequency))
result = [(dictionary[key], key) for key in dictionary]
result.sort()
result.reverse()
return result[:10]
if __name__ == '__main__':
print(frequencyList('1984.txt', 'stopwords.txt'))
答案 0 :(得分:0)
我想说,因为你希望允许没有stopfile
你的代码实际上会变得更加混乱,试图打开两个文件,其中一个文件可能不存在,其中一个文件必须比目前更好,因为你会必须检查哪个文件产生了错误,如果是stopfile
则禁止异常。