2014-11-04 2 views
0

누군가가 도와 주실 수 있습니까? 그로 크 러닝 (Grok Learning)은 다음과 같습니다 :Grok Learning Python 3.3 Files

당신은 개가 "돕고"편지에 너무 기여하고 있다는 것을 깨닫기 위해 당신의 편지를 당신의 펜팔에 씁니다! 모든 몇 줄은 WOOF로 시작한다는 것을 알았습니다! 당신이 단순히 쓰지 않은 것들을 포함합니다!

letter.txt 파일에서 줄을 읽어 와서 WOOF!로 시작하지 않는 유일한 줄을 포함하는 fixed.txt라는 새 파일을 작성하는 프로그램을 작성하십시오. 내 채소 정원이 정말 잘 성장하고

:

예를 들어

는 다음 letter.txt를 제공!
WOOF! 잡기 놀이하자!
토마토와 오이는 거의 먹을 준비가되어 있습니다.
정원은 어떻게됩니까?
WOOF! 그 포섬을 더 잘 쫓아 다닌다! 내 채소 정원이 정말 잘 성장하고

: 포함 파일 fixed.txt을 만들어야합니다

프로그램!
토마토와 오이는 거의 먹을 준비가되어 있습니다.
정원은 어떻게됩니까?

내 현재 코드입니다 (I 노력을 계속하고 편집 할 것이다 당신에게 게시 놈들을 유지합니다.) :

open("letter.txt").read() 
line = letter.txt.split() 
if line.startswith("WOOF!"): 
    print("") 
else: 
    print(letter.txt) 
letter.txt.close() 

어떤 도움을 주시면 감사하겠습니다. 미리 감사드립니다!

+0

우리에게 기존의 코드를 제시해주십시오. 파일을 여는 데 문제가 있습니까? 파일 읽기?'startswith' 사용 하시겠습니까? – Matthias

+0

파이썬에서 한 줄씩 텍스트 파일을 읽기가 쉽습니다. 또한 쓰기 위해 열어 둔 다른 텍스트 파일에 선을 쓰는 것도 쉽습니다. 파일에서 읽은 행이 있으면 문자열 객체/변수입니다. 테스트에 사용할 수있는 문자열 객체의'line.startswith ('xxx') 메소드가 있습니다. – pepr

+0

@ pepr의 힌트를 사용하면 적절하게 포맷 된 행이 4 개만 필요합니다. –

답변

0

좋아, 잘하고있어, 내가 해결책을 줄 것이다. 여전히 프로그래밍이 아니지만 구문을 추측하므로 official tutorial을 확인하시기 바랍니다.

먼저 두 파일을 모두 열어 보겠습니다. 기본값은 읽기 위해 파일을 여는 것입니다. 원본 파일은 괜찮지 만 대상 파일은 허용되지 않으므로 mode='w'을 사용하여 쓰기가 가능합니다.

그런 다음 소스 파일의 각 행을 반복하고 행이 'WOOF!'으로 시작하는지 확인하고 그렇지 않으면 대상 파일에 행을 씁니다. 루프는 소스 파일의 모든 행을 읽을 때 중지됩니다.

루프가 끝나면 두 파일을 닫습니다.

def main(): 
    source_file = open('letter.txt', encoding='UTF-8') 
    target_file = open('fixed.txt', mode='w', encoding='UTF-8') 

    for line in source_file: 
     if not line.startswith('WOOF!'): 
      target_file.write(line) 

    source_file.close() 
    target_file.close() 

if __name__ == '__main__': 
    main() 

파일을 닫지 않은 경우 대상이 비어있을 수 있습니다. 닫기 처리를 원하지 않으면 with 문을 사용하여 파이썬이 처리하도록하십시오.

블록은 with 블록이 남아있을 때 닫힙니다.

+0

초보자를 위해서 나는'def main() :'과''if''를 남겨 둘 것입니다. 단지 이해가 더 복잡해집니다. – pepr

+0

@Matthias와 Ed를 도울 다른 사람들에게 감사드립니다. 나는 당신의 응답자를 upvote 하겠지만, 충분한 담당자가 없습니다. –

+0

@pepr : 당신 말이 맞아요. 나는 대답에서'if __name__ == '__main __':'의 목적을 언급 했어야했다. 짧은 설명 : 파일을 가져올 때 코드가 실행되는 것을 방지합니다. – Matthias

0
with open('letter.txt','r') as f: 
with open('fixed.txt','w') as i: 

    for line in f: 
    if 'WOOF!' not in line: 
     print(line.strip(), file=i) 

내 대답

0
with open('letter.txt') as fin, open('fixed.txt', 'w') as fout: 
    for line in fin: 
    if not line.startswith('WOOF!'): 
     fout.write(line) 
+2

답변에 대한 설명 및/또는 정보를 추가하여 질문 된 문제를 해결하는 방법을 설명하여 다른 사람들이 설명을 요구하지 않고 쉽게 이해할 수있게하십시오. – koceeng