디렉토리에 fName.txt라는 파일이 있습니다. 다음 파이썬 스 니펫 (시뮬레이션에서 가져옴)을 실행하면 루프 (코드 단편 포함)를 세 번 실행하여 텍스트 파일에 3 개의 행과 2 개의 열에 6 개의 숫자를 추가 할 수 있습니다. 그러나 새로운 데이터를 쓰기 전에 파일을 완전히 비우고 싶습니다. (그렇지 않으면 스크립트를 여러 번 실행하면 시뮬레이션에 필요한 행이 3 개 이상 생성되어 말도 안되는 결과가 발생합니다. 즉, 스크립트는 이어야합니다. 시뮬레이션에서 방금 생성 된 행 3 개 참조). 나는 다음의 페이지 how to delete only the contents of file in python을 보았습니다. 어떻게하는지 설명합니다.하지만 그것을 나의 예제로 구현할 수는 없습니다. 특히, pass
문장 이후에, 나는 내 파일이 닫히고 그 파일이 print
문장이 실행되면 다시 닫혀 져야한다는 사실을 감안할 때 명령문의 순서를 확신 할 수 없다. 매번 나는 어떤 경우에도 피할 수없는 다른 오류 메시지를 받았습니다. 나는 그 중 하나를 사용하지 않고 단순한 형태의 조각을 떠나기로 결심 이유를파이썬 스크립트로 파일을 쓰기 전에 파일 내용을 삭제하는 방법은 무엇입니까?
/usr/lib/python3.4/site-packages/numpy/lib/npyio.py:1385: UserWarning: genfromtxt: Empty input file: "output/Images/MW_Size/covering_fractions.txt" warnings.warn('genfromtxt: Empty input file: "%s"' % fname) Traceback (most recent call last): File "Collector2.py", line 81, in LLSs, DLAs = np.genfromtxt(r'output/Images/MW_Size/covering_fractions.txt', comments='#', usecols = (0,1), unpack=True) ValueError: need more than 0 values to unpack
이것은 다음은 내용 (인쇄 문 다음 주로 예상) 삭제 된 것으로 나타났다 내가 수신 된 오류 중 하나 일종이다 해당 페이지에서 제안 :
covering_fraction_data = "output/Images/MW_Size/covering_fractions.txt"
with open(covering_fraction_data,"mode") as fName:
print('{:.2e} {:.2e}'.format(lls_number/grid_number, dla_number/grid_number), file=fName)
fName.close()
시뮬레이션의 각 실행 파일로 인쇄해야 3 개 행을 생성합니다. mode
이 'a'인 경우, 3 개의 생성 된 선이 이미 일부 내용을 포함하고 있기 때문에 3 개 이상의 행을 포함하는 텍스트 파일을 생성하는 기존 파일에 추가됩니다. 'a'를 'w'로 변경하면 텍스트 파일에 3 개의 행이 인쇄되는 대신 1 개의 행만 인쇄됩니다. 처음 두 행은 원하지 않게 삭제됩니다.
해결 방법 :
이 모든 것을 피하기 위해 주위에있는 유일한 방법은 'A'mode
를 선택하고 수동으로 코드를 실행하기 전에 파일의 내용을 삭제하는 것입니다. 이렇게하면 출력에서 예상되는 코드를 실행 한 후 텍스트 파일에 3 개의 행만 생성됩니다.
질문 :
그래서, 내 질문은 어떻게 위의 코드를 수정할 수 있습니다이 세 가지 새 행으로 가득 자동으로 이전 및 을 파일 의 삭제를 할 사실에 "기본적으로? "
귀하의 도움에 감사드립니다.
처음 –
* "나는 * 내 예에 그것을 구현할 수 아니다"; 당신이 왜 할 수 없는지에 대해 자세히 설명해 주시겠습니까? –
나는 그 문제에 대해 더 많은 연구를했다. 난 * 삭제 * 기능을 피하기 위해 노력하고 오히려 시뮬레이션이 실행될 때마다 'w'모드를 사용하여 처음부터 파일을 생산하고 있습니다. – Allan