2016-08-13 3 views
0

비슷한 질문을 발견했으며, 제안 된 해결책을 시도했지만 아무도 내 문제를 해결하지 못했습니다. 내가하려고하는 것은 본질적으로 하나의 파일에서 다른 파일로 데이터를 복사하는 것이며 오류가 없으며 'line'변수가 문자열이고 올바른 데이터가 포함되어 있는지 확인했지만 실제로는 쓰지 않습니다. 파일. 현재 Python 2.7을 사용하고 있습니다.파일에 파이썬 쓰기를하지 않습니다.

나는 다른 해결책이 제안한 것처럼 성공했다. .flush()를 추가하려고 시도했다. 첫 번째 for 루프 앞에 정적 문자열을 쓰면 실제로 파일에 쓰는지 확인했습니다. 내 의심은 두 파일을 열어 둘 중 하나를 반복하는 것과 관련이 있지만이 파일의 유효성을 확신 할 수는 없다.

with open("data/data.csv", 'w+') as data_file, open("data/raw/" + data_point + ".csv", 'r') as raw_file: 
    for line in raw_file: 
     line = line.split(',') 
     temp_date = datetime(int(line[0]), int(line[1]), int(line[2])) 
     if newest_date == datetime(1,1,1): 
      newest_date = temp_date 
     if temp_date < oldest_date: 
      oldest_date = temp_date 
     sorted_raw = [[float(line[4]), float(line[5])]] + sorted_raw 

    raw_file.seek(0) # reset read pointer 
    for line in raw_file: 
     data_file.write(line) 

편집 : 이제는 내 멍청이를 깨닫습니다. 나는 이것의 수정 된 복사 붙여 넣기 였지만 기록이없는 두 번째 완성되지 않은 함수를 가졌다. 파일을 여는 "w +"메서드는 매번이 코드를 지워줬고이 코드 블록이 끝난 직후이 두 번째 함수가 항상 호출 되었기 때문에 필자는 필기 된 파일을 잡을 수 없었습니다. 소음에 사과드립니다

+0

'data' 하위 디렉토리가 스크립트와 같은 디렉토리에 있습니까? – Soviut

+0

예,이 또한 현재 Windows 10에서 실행 중임을 기억해야합니다. – beeedy

+0

이런 종류의 사례에서 할 수있는 예의 바른 문제 (문제가 완전히 다른 곳에서 발생했기 때문에 문제가 해결되지 않았기 때문에)는 질문을 삭제하는 것입니다. -이 경우에는 저 rep 사용자가 upvoted 응답이있을 때 자체 삭제할 수 없으므로 @ Soviut의 협력이 필요합니다. –

답변

1

첫 번째 루프의 데이터 파일에 쓸 수 있습니다.

with open("data/data.csv", 'w+') as data_file, open("data/raw/" + data_point + ".csv", 'r') as raw_file: 
    for line in raw_file: 
     line = line.split(',') 
     temp_date = datetime(int(line[0]), int(line[1]), int(line[2])) 
     if newest_date == datetime(1,1,1): 
      newest_date = temp_date 
     if temp_date < oldest_date: 
      oldest_date = temp_date 
     sorted_raw = [[float(line[4]), float(line[5])]] + sorted_raw 

     data_file.write(line) 
+0

파스타 오류 복사, 심각한 사과하고 그것은 해결되었습니다! (이 코드에 실제로 있지 않습니다) – beeedy

+0

@beeedy 내 대답을 업데이 트했습니다. – Soviut

+0

원본 게시물을 편집하여 스크립트에서 실행되지 않은 코드를 남겨 두는 완전한 실수였습니다. – beeedy

관련 문제