2013-04-14 4 views
1

파이썬 쉘에서 피라미드 형태로 표시되는 단어 열이 있습니다. 그러나 .txt로 이동하려고 할 때 문제가 있습니다. 파일.쓰려는 .txt 파일의 줄 수를 선택하십시오.

문제는 프로그램에서 각 문자를 가져 와서 새 파일에 쓰지만 첫 번째 줄에만 쓰고 이전 줄을 새로운 줄로 바꾼다는 것인데 결국 파일에 마지막 줄.

필자는 쓰기 기능에 +'\n'을 추가하려고했지만 결과적으로 피라미드가 정렬되지 않습니다.

텍스트 파일에서 첫 번째 줄, 두 번째 줄 등을 선택하여 쓰기 만하면 해결 방법이 될 수 있지만 그런 해결책은 없습니다.

코드의 일부는 다음과 같습니다

def pyramid(text): 

    for i in text: 
     line = string.center(i) 
     afile = open("name.txt", "w") 
     for row in text: 
      afile.write(row) 

입력 "텍스트"단어와 함께 중첩 된 목록입니다.

+5

코드를 설명하는 대신, 질문을 편집하여 포함 시키면 사람들이 쉽게 도움을받을 수 있습니다. (코드를 정확히 복사하여 붙여 넣은 다음 코드를 선택하고 control-K를 누르거나'{}'편집 버튼을 클릭하여 포맷하십시오.) – DSM

+0

도움을 받으려면 코드를 제시해야합니다. 하지만 제 크리스탈 볼은 루프 내에서 쓰기 모드로 파일을 열어서 각 반복마다 내용을 지울 수 있다고 말합니다. –

+0

텍스트 파일의 특정 줄을 편집하고 싶습니까? 그럼이 [질문] (http://stackoverflow.com/questions/4719438/editing-specific-line-in-text-file-in-python)을 확인 – ton1c

답변

3

문제는 각 반복마다 쓰기 모드로 파일을 여는 것이므로 파일이 먼저 잘린 다음 새 줄을 쓸 때마다 문제가 발생합니다.

루프 외부에서 파일을 엽니 다.

In [18]: text=['words words','words words words','words words words words'] 

def pyramid(text): 
    with open("abc","w") as f: 
     max_width=len(text[-1]) 
     for line in text: 
      f.write("{0:^{1}s}\n".format(line,max_width)) #use string formatting 
    ....:    

In [20]: pyramid(text)             

In [21]: print open("abc").read() 
     words words  
    words words words 
words words words words 

String formatting

:

는^: 사용 가능한 공간 내에서 중심되는 필드를 강제로.

+0

Ths 문제가 발견되면 "행"은 실제 행과 동일하지 않지만 문자 중 하나는 문제가 시작되는 곳에서와 같습니다. –

+0

@DavidBartovski '텍스트'를 보지 않으면 왜 방법이 작동하지 않는지 말할 수 없습니다. –

+0

텍스트 = [ '단어 단어', '단어 단어 단어'] –

3

사용 afile = open("name.txt", "a"); 쓰기 모드는 파일 내용을 덮어 씁니다.

+0

그리고 이제는 파일의 긴 줄에 모든 내용을 씁니다. –

+0

@DavidBartovski : 파일에 쓰기 직전에'row = row + '\ n'을 추가하십시오. – refi64

2

a 옵션을 사용하여 파일을 열면 첨부 파일이 추가 모드로 열립니다. 추가 모드에서는 무언가가 기록 될 때마다 덮어 쓰기 대신 끝에 추가합니다. 이 프로그램을 실행할 때마다 항상 맨 아래에서 시작됩니다. 다시 시작할 때마다 파일을 지워야합니다.

관련 문제