2015-01-31 3 views
0

파일을 열고 한 줄씩 읽고 각 줄의 세 번째 요소 만 저장하는 프로그램을 작성했습니다. 문제는 그 출력을 파일에 쓸 때 나중에 필자가 작성한 파일에 대해 수학적 연산을하고 싶다는 이유로 적합하지 않은 문자열로 변경해야한다는 것입니다. 참고로, 이와 같이 저장하고 그것을 읽는 동안 int()를 사용하는 것은 적합하지 않습니다.파이썬에서 파일에 숫자로 데이터 저장

아무도이 문제를 해결할 수 있습니까?

with open("/home/test1_to_write", "w") as g: 
    with open("/home/test1_to_read", 'r') as f: 
     for line in f: 
      a=line.split() 
      number = int(a[3]) 
      g.write(str(number)+'\n') 

g.close() 
+4

파일은 순진하고'int's과'str's의 개념이 없습니다. 파일을 읽고 int로 변환하십시오. –

+0

나는'chr (number)'를 써볼 수는 있겠지만, 나중에 쓰는 작업을 계획한다면 –

+0

numpy.loadtxt 같은 것을 사용하는 것이 좋을지도 모른다. –

답변

3

1는 숫자 하나가 아닌 문자 "1"있는 텍스트 파일을 알 수있는 방법은 없습니다. 필요한 경우 일종의 직렬 형식을 사용하는 대신 모든 것을 목록으로 저장하는 것이 좋습니다. JSON :

import json 

with open("/home/test1_to_write.json", 'w') as outfile: 
    with open("/home/test1_to_read", 'r') as infile: 
     data = [int(line.split()[3]) for line in infile] 
     json.dump(data, outfile) 

그런 다음에 데이터를로드 할 수

with open("/home/test1_to_write.json", "r") as infile: 
    read_data = json.load(infile) 
+0

하지만 json은 OP와 같은 단일 열 ascii 파일보다 낫지 않습니까? – tdelaney

+0

@tdelaney'json.load (fileobj)'와'[fileobj의 줄에 대한 int (line)]입니다. 나는 그에게 다른 독약을 제공하고있는 것 같아. 적어도 그는 선택을 얻는다. –

+0

나는 지금 또 다른 질문을 가지고있다. 내 자신의 코드로 가서 문자열로 데이터를 저장한다고 가정합니다. 읽고 싶을 때 '\ n'을 입력 했으므로 int (line)를 사용하는 데 오류가 발생했습니다. –

관련 문제