2017-02-25 2 views
0
from collections import Counter 
from glob import iglob 

import re 
import os 

def remove_garbage(text): 
    """Replace non-word (non-alphanumeric) chars in text with spaces, 
     then convert and return a lowercase version of the result. 
    """ 
    text = re.sub(r'\W+', ' ', text) 
    text = text.lower() 
    return text 

topwords = 50000 
folderpath = 'd:/jktextall/' 
counter = Counter() 

for filepath in iglob(os.path.join(folderpath, '*.txt')): 
    with open(filepath) as file: 
     counter.update(remove_garbage(file.read()).split()) 
file1 = open("jkwords1.txt","w") 
for word, count in counter.most_common(topwords): 
file1.write (str(count) +"," + word + "\n") 

file1.close 

위 코드를 수정하여 텍스트 파일 jkwords1.txt에 출력을 작성했습니다. 텍스트 파일에 아무 것도 기록되지 않습니다. 그러나 print (word,count)은 파이썬 콘솔에서 출력을 생성합니다.파이썬 루프 출력이 텍스트 파일이 아님

그러나 file1.write 대신 print(count,word)을 사용하면 화면이 출력됩니다.

+0

사용'...'반드시 모든 것이 제대로 디스크에 기록됩니다 확인합니다. –

답변

0

close 함수를 제대로 호출하지 않습니다. -

file1.close은 파일 1로 (...)이 열린>file1.close()

+0

그랬어. 하나의 레코드 만 jkwords1.txt 파일에 있으며 이전에는 없었습니다 (file1.close() 사용 전). 그러나 print 키워드의 결과는 커집니다. – user1955215

+0

'file1.write (str (count) + ","+ word + "\ n")'들여 쓰기를 수정 하시겠습니까? –

+0

감사합니다. 들여 쓰기의 변화가 도움이되었습니다. Python을 처음 사용합니다. 더 자세한 정보가 필요합니다. – user1955215

관련 문제