미리 도움을 청하십시오.Python - 하나의 파일에서 데이터 읽기 및 선택적으로 새 파일에 쓰기
저는 파이썬에서 새롭고 한 형식에서 다른 형식으로 파일을 변환하려고합니다. 데이터 라인 뒤에 상단에
fs = open('sample_data.txt','r')
fnew = open('sample_output.txt','w')
with fs as f:
while True:
line = f.readline()
if line and line[0]=='#':
print(line)
fnew.write(line + '\n')
else:
data=line.split()
fnew.write(data[0])
if not line: break
print('end of program')
fs.close
fnew.close
파일의 기본 형식은 주석 포함 헤더 : 여기
는 내가 가지고있는 코드입니다.나는 fnew.write (data [0]) 행에 문제가 있습니다. 범위
라인 분할 내가 처음 두를 제거 할의 8 개의 데이터 열을 나눕니다에서리스트 인덱스 :
IndexError : 나는 다음과 같은 오류가 발생합니다. 그래서 궁극적으로, 전체 파일에서 처음 두 열을 뺀 것을 다시 쓰는 것입니다. 몇 가지 더 복잡한 형식을 다시 포맷해야하지만이 단계에서 오류를 이해할 수 있으면 나머지 작업을 수행하는 방법을 알아낼 수 있기를 바랍니다.
-------------- 업데이트
아바넷입니다. 이 오류를 일으키는 개행 문자입니다. 그러나 수표를 추가 할 때 또 다른 문제가 있습니다. 아래 코드를 실행하면 모든 것이 자동 정지됩니다. "if data :"검사를 제거하면 실행되지만 동일한 "색인 범위를 벗어남"오류가 발생합니다.
"if data :"체크가 제거되고, 개행 문자가없는 샘플 데이터 파일과 함께 다음과 같이 실행 해 보았습니다. 그리고 나 역시 멈추었습니다.
이 문제의 원인을 밝힐 수있는 사람이 있습니까?
fs = open('sample_data.txt','r')
fnew = open('sample_output.txt','w')
with fs as f:
while True:
line = f.readline()
for line in f:
if line[0]=='#':
print(line)
fnew.write(line + '\n')
else:
data=line.split()
if data:
print(data[0])
fnew.write(data[0] + '\n')
print('end of program')
fs.close
fnew.close
-------------- 업데이트 2
작품 아래에이 코드. 무한 루프 문제를 해명 해 준 바바라에게 감사드립니다. 마지막 문제는 개행이나 헤더 줄이든 데이터의 첫 번째 줄이 무시되고 결과물에 출력되지 않는다는 것입니다.
with open('sample_data.txt','r') as f, open('sample_output.txt','w') as fnew:
line = f.readline()
for line in f:
if line[0]=='#':
print(line)
fnew.write(line + '\n')
else:
data=line.split()
if data:
print(data[0])
fnew.write(data[0] + '\n')
print('end of program')
fnew.close()
봅니다 시도-을 제외하고 블록을 제외한에서 블록 및 인쇄 데이터가 데이터 변수는 – Dinesh
통화 인쇄이 무엇을 볼 수있는 결함에 fwrite를 포장하는 . 무엇이 출력됩니까? –
제쳐두고 .. "fs.readlines() :"에 다음 행을 추가하여 "f :// True :/line = f.readline()"과 같이이 세 줄을 "바꿀 수 있습니다. 그렇게해도 문제는 해결되지 않지만 코드가 더 멋지게 보일 것입니다. –