2013-11-04 5 views
0

내가 한 줄의 토큰 및 출력에 각각의 토큰을 구조화되지 않은 텍스트 파일을 분할 코드를 사용출력을 새 txt 파일에 저장하는 방법은 무엇입니까?

with open("C:\\...\\...\\...\\record-13.txt") as f: 
    lines = f.readlines() 
    for line in lines: 
     words = line.split() 
     for word in words: 
      print (word) 

지금 내가 대신 인쇄의 새로운 텍스트 파일로 출력을 저장하려면, 나는 수정 코드 :

with open("C:\\...\\...\\...\\record-13.txt") as f: 
    lines = f.readlines() 
    for line in lines: 
     words = line.split() 
     for word in words: 
      file = open ("tokens.txt", "w") 
      file.write (word) 
      file.close() 

그러나 작동하지 않습니다. 그게 뭐가 잘못 됐는지 말해 줄래?

+0

단어를 쓸 때마다 출력 파일을 닫습니다. 그런 다음 다시 쓰기 위해 열어 당신이 한 일을 파괴하십시오. 기타 다른 것들은'open ("tokens.txt", "w") :'위쪽에 블록하고 출력 파일을 닫지 않고 (또는 다시 열지 마십시오.) 루프 안에 붙이십시오. –

답변

3

각 토큰에 대해 파일을 열고 있으며 'w' 모드로 열면 파일이 잘립니다. 'a' 모드로 열어 파일에 추가 할 수는 있지만 매우 비효율적입니다.

가장 좋은 방법은 처음부터 출력 파일을 열고 컨텍스트 관리자가 닫도록하는 것입니다. 또한 처음부터 전체 파일을 메모리로 읽을 필요가 없습니다.

with open("in.txt") as in_file, open("tokens.txt", "w") as out_file: 
    for line in in_file: 
     words = line.split() 
     for word in words: 
      out_file.write(word) 
      out_file.write("\n") 

각 단어가 다른 줄에 표시되기를 바랍니다. 새 줄 문자도 반드시 써야합니다.

+0

고맙습니다.하지만 (PermissionError : [Errno 13] Permission denied : 'tokens.txt') 어떤 오류가 발생했는지 알지 못합니다. – MACEE

+0

당신은 디렉토리에 대한 쓰기 권한이 없다고 말하고 싶습니다. – Tim

+0

디렉토리를 바꿀 수 있습니까?! 또는 다른 옵션? – MACEE

관련 문제