파이썬으로 파일 Open 질문 입니다
조회수 685회
CMD로 Ping 입력후 해당값을 txt로 저장한 다음 파이썬으로 open 으로 txt 파일을 열고 txt 파일에 있는 내용중 find를 이용하여 특정 값을 찾고 난 뒤 첫번째와 두번째 값을 비교할려고 하는데 readlines로 읽은뒤 line[1]하면 첫번째 줄이 나오지만 range로 들어가면 line[1]을 하면 첫번째 줄이 아닌 첫번째 줄의 2번째 글자 하나만 나옵니다.
range에 돌리면서 해당 txt 파일의 줄에 해당하는 값을 어떻게 해야 얻습니까?. (line[0]하면 1번째 글자가 아닌 첫번째 줄 이 나오는 방법)
밑에는 코드 입니다
for x in range(len(line)):
idx = line[x].find("[")
if idx == 0:
line[x]=line[x].replace('[{','')
line[x]=line[x].replace('}]','')
line[x]=line[x].replace('"','')
spl = line[x].split(',')
data1 = 0
for y in range(len(spl)):
dat = spl[y].find(spl[12])
times = spl[y].find(spl[2])
if times == 0:
tim = spl[y].split(':')
if dat == 0:
dat = spl[y].split(':')
data1 = dat[1]
2 답변
-
흐음...
배열의 값들이 한 줄이 나올때는
fileObject.readlines()
을 하신것 같고,배열의 값들이 하나의 문자만 나올때는
fileObject.readline()
을 하신 것 같은데요.(메소드 끝에
s
가 붙느냐 안 붙느냐의 차이)한 번 확인해 보세요.
- readline을 사용을 안했는데 open외에도 다른곳에 open을 안한곳에 readline을 사용 할 수 있습니까? JaeHyeong 2018.9.4 13:41
- 음.. 그게 아니라면 문자열이 아니라 문자가 나오는 건 저도 이해가 가지 않네요. 제가 함수 단위로 해본 테스트들은 말씀하신 것과 같은 오동작은 없었는데 말이죠... 일단 line 값이 무엇이고 기대한 값이 아니라면 왜 그렇게 나왔는지 코드를 거슬러 올라가 보는 수 밖에 없을 듯 합니다. doodoji 2018.9.4 13:50
- 그리고 첨부해 주신 코드로는 문제를 파악하기 힘들어요. 그 전에 파일을 읽는 부분과 그 이후 데이터 정제 과정에서 첨부해주신 부분에 line을 어떻게 넘겨주는지를 봐야 알 것 같아요. doodoji 2018.9.4 13:53
- f = open(filepath, 'rt') line = f.readlines() line은 이렇게 넘겨주고 있습니다 JaeHyeong 2018.9.4 13:55
- 주신 코드만 봤을때는 문제 없어보여요 -_-ㅋ 입력 데이타(파일)의 문제일 수도 있습니다. 문자 하나마다 줄바꿈이 있다거나... 파일을 한 번 확인해 보심이 ㅠ doodoji 2018.9.4 14:07
- 오히려 더 헤깔리게 해 드린게 아닌지 모르겠네요... 꼭 버그 찾으시길 바랄게요!! doodoji 2018.9.4 14:08
-
우선 라인번호를 얻는 방법은 아래와 같이 enumerate 함수를 사용하면 됩니다.
파싱부분의 문제는 소스 문자열 제공 및 목적부분의 설명이 있어야 할 것 같습니다.
with open('file path') as f: for i, v in enumerate(f): print(i, v)
댓글 입력