2016-11-14 1 views
0

파일을 사전에 읽어서 키가 단어이고 값이 단어의 발생 횟수가되도록하려고합니다. 나는 일을해야 뭔가를 가지고,하지만 난 그것을 실행하면 이것은 내가 지금 무슨 나를파이썬을 사용하여 사전에 파일을 읽을 때 값 오류가 발생했습니다.

ValueError: I/O operation on closed file. 

에게 제공합니다

try: 
    f = open('fileText.txt', 'r+') 
except: 
    f = open('fileText.txt', 'a') 
    def read_dictionary(fileName): 
     dict_word = {} #### creates empty dictionary 
     file = f.read() 
     file = file.replace('\n', ' ').rstrip() 
     words = file.split(' ') 
     f.close() 
     for x in words: 
      if x not in result: 
       dict_word[x] = 1 
      else: 
       dict_word[x] += 1 
     print(dict_word) 
print read_dictionary(f) 
+0

변수 'fileName'은 실제로 파일 핸들입니다. 'file' 변수는 파일의 텍스트 내용입니다. 적어도, 당신의 이름이 그들에게 할당 된 것을 설명한다면, 문제의 위치를 ​​쉽게 추론 할 수 있습니다. – jonrsharpe

답변

0

그것은 파일이 write mode에서 열린되기 때문이다. 쓰기 모드는 not readable입니다.

이 시도 :

with open('fileText.txt', 'r') as f: 
    file = f.read() 
0

수동으로 파일이 열려있는 추적을 유지 피하기 위해 컨텍스트 관리자를 사용합니다. 또한 잘못된 변수 이름을 사용하는 데 몇 가지 실수가있었습니다. 코드를 단순화하기 위해 아래 defaultdict을 사용했지만 실제로 필요하지는 않습니다.

from collections import defaultdict 
def read_dict(filename): 
    with open(filename) as f: 
     d = defaultdict(int) 
     words = f.read().split() #splits on both spaces and newlines by default 
     for word in words: 
      d[word] += 1 
     return d 
관련 문제