2012-04-01 2 views
0

필자는 파이썬에서 몇 줄의 코드를 작성하여 텍스트 파일을 읽을 수 있는지, 라인 자체가 나열되어있는 목록을 만든 다음 모든 것을 다시 문자열로 변환하고 다른 파일에 출력으로 작성하십시오. 이것은 바보 같이 들릴지도 모르지만 목록에 나온 항목을 뒤섞기위한 것이므로 처음에 올바르게 읽고 쓸 수 있어야합니다.파이썬 코드가 인터프리터에서 실행되지 않는 한 파일에 쓰지 않는다.

import csv,StringIO 

datalist = open('tmp/lista.txt', 'r') 

leyendo = datalist.read() 
separando = csv.reader(StringIO.StringIO(leyendo), delimiter = '\t') 

macrolist = list(separando) 

almosthere = ('\t'.join(i) for i in macrolist) 

justonemore = list(almosthere) 

arewedoneyet = '\n'.join(justonemore) 

with open('tmp/randolista.txt', 'w') as newdoc: 
    newdoc.write(arewedoneyet) 

newdoc.close() 
datalist.close() 

이 내가 통역에 라인으로 라인을 실행하면 잘 작동하는 것 같다,하지만 난 별도의 파이썬 스크립트로 저장하고 실행할 때 (myscript.py) 아무 일도 발생하지 :이 코드입니다. 출력 파일도 생성되지 않습니다. 비슷한 문제를 여기에서 제기 한 후, 나는 output = open()을 통해 출력 파일을 열기 전에 'with'매개 변수를 도입 했으므로 파일을 닫을뿐만 아니라 플러시도 시도했습니다. 아무 것도 작동하지 않습니다. . 독립 실행 형 스크립트는별로 도움이되지 않지만 인터프리터에서 작동하면 코드가 잘못 될 수는 없습니다. 맞습니까?

미리 감사드립니다.

추신 : 나는 Python을 처음 사용하고 프로그래밍에 익숙하지 않으므로, 기본적인 문제에 대한 이해가 부족하기 때문에 사과드립니다.

+1

'newdoc.close()'를 할 필요가 없습니다.'with' 문 끝에서 벗어나면 닫힙니다. 또한,'StringIO'를 사용할 필요가 없습니다. - csv.reader (datalist, delimiter = '\ t')'이면 충분합니다. – lvc

+0

close() 문을 사용했는데 여전히 작동하지 않습니다 ... –

답변

4

입력 파일은 어디에 있고 출력 파일을 저장할 위치는 어디입니까? 스크립트의 이런 종류의 내가 그것을보다 효율적으로 사용하는 절대 경로 있다고 생각

사용 :

open('/tmp/lista.txt', 'r') 

대신 :

open('tmp/lista.txt', 'r') 

내가 오류이

+0

감사! 경로 문제 일 수 있습니다. 하지만 두 예제 사이에 어떤 차이가 보이지 않습니다 ... –

+0

나는 내 게시물을 편집합니다. tmp의 선두 슬래시 –

+0

제안 해 주셔서 감사합니다. 장래에이 사실을 명심 해 두겠습니다. 이제 문제가 해결되었습니다 (실제로 경로의 문제였습니다). 다른 답변을 참조하십시오! –

2

과 관련이있을 수 있다고 생각 통역사를 시작하는 곳과 관련이있을 수 있습니다.

상대 경로 대신 절대 경로 /tmp/randolista.txt을 사용하여 문제를 격리 해보십시오.

+0

감사로 표시해주세요. OK, 해결되었습니다. 실제로 경로 문제였습니다. 그리고 매우 바보 같았습니다. 경로는 인터프리터에게는 좋았지 만 스크립트가 배치 된 폴더 (입력 파일과 동일 함)에는 적합하지 않았기 때문에 폴더를 찾을 수 없었습니다. 진심으로 시간 낭비에 사과드립니다. 정말 고마워요! –

+0

@ JorgeGonzález 걱정할 필요가 없습니다. 그래서 질문을하는 것이 전부입니다. 사과 할 필요가 없습니다. –

+0

대단히 감사합니다! 나는 조금 전에 그것을 발견했지만 지금까지만 읽었습니다. 환상적인 커뮤니티. 다시 한번 감사드립니다. –

관련 문제