>source

그래 나는 이것을 알고유제이 포럼에 게시되었지만 지금까지 내 문제를 해결하기에 충분한 답변이 없습니다.

여기에 다음 코드가 있습니다.

with open(filename,'r',buffering=2000000) as f:
    f.readline()                # takes header away
    for i, l in enumerate(f):   # count the number of lines
        print('Counting {}'.format(i),end='\r')
        pass

파일은 23GB csv 파일입니다. 다음과 같은 오류가 발생합니다.

File "programs\readbigfile.py", line 33, in <module>
    for i, l in enumerate(f):  # count the number of lines
PermissionError: [Errno 13] Permission denied

오류는 항상 줄 번호에서 발생합니다. 1374200 . 텍스트 편집기로 파일을 확인했는데 그 줄에 특이한 것이 없습니다. 이것은 동일한 파일이지만 더 작은 버전 (몇 기가 바이트 미만)으로 나에게 발생했습니다. 그런데 갑자기 작동했습니다. 파일이 다른 프로세스에서 전혀 사용되지 않습니다.

이 오류가 파일 중간에 발생하는 이유에 대한 아이디어가 있습니까?

PD. Intel i5-6500 CPU/16Gb 메모리와 NVIDIA GeForce GTX 750 Ti 카드가있는 컴퓨터에서이 프로그램을 실행하고 있습니다. 시스템은 Windows 10입니다.Python 3.7.6 x64/아나콘다 파일이 로컬 디스크에 있으며 네트워킹이 필요하지 않습니다.

  • 답변 # 1

    그것이 무엇이든, 나는 당신의 코드가 괜찮다고 생각합니다.

    내 아이디어 :

    이 버퍼링이 필요합니까? 완전히 제거하려고 했습니까?

    Windows에서 실행중인 것 같습니다. 그게 중요한지 모르겠지만 Windows에서 이상한 문제가 많이 발생합니다.

    네트워크의 디스크 (삼바 등)에 액세스하려는 경우 완전히 동기화되지 않았을 수 있습니까?

    그동안 다른 사람이이 파일에 액세스하려고하지 않는 것이 확실합니까? 뛰어나다?

    이 파일을 읽으려고 했습니까? csv.reader ? 그래도 도움이 될 것 같지 않습니다.

    당신은 할 수 있습니다 try/except 오류가 발생하면 확인 os.stat 또는 os.access 권한이있는 경우

    인쇄에 문제가있을 수 있으며 큰 파일처럼 들립니다. 인쇄하지 않고 시도 했습니까? 추가하고 싶을 수도 있습니다. if i % 1000 == 0: print(...)

  • 답변 # 2

    오류는 잘못된 디스크 블록이나 디스크 시스템 오류로 인해 파일 쓰기 오류로 인한 것임을 알았습니다. 요점은 파일에CRC 오류중간 어딘가에 파일을 다시 생성하여 수정했습니다. 임의의 오류이므로 동일한 상황에 처한 경우 확인 중 하나가건강파일 자체의.

관련 자료

  • 이전 wordpress - 각 첫 글자 아래 및 열 내에서 알파벳 순서로 된 용어 목록
  • 다음 sql - MYSQL ALTER TABLE 문에서 변수 또는 함수 사용