나는이알려진 크기의 mmap을 사용하여 새 파일을 만들 수없는 이유는 무엇입니까?
size = 83456
self.file = open("/tmp/installer.ipk", "r+b")
self.mm = mmap.mmap(self.file.fileno(), size, access=mmap.ACCESS_WRITE)
같은 메모리 매핑 된 파일을 만들려고하고 있지만 다음과 같은 예외
Traceback (most recent call last):
...
File "./dept_sensor_service.py", line 70, in handle_control
self.mm = mmap.mmap(self.file.fileno(), size, access=mmap.ACCESS_WRITE)
ValueError: mmap length is greater than file size
나는이 프로그램을 실행하기 전에 파일 /tmp/installer.ipk
이 존재하지 않습니다를 얻을. 스크립트에서 /tmp/installer.ipk
이라는 파일을 만들고 83456 개의 0으로 채우기를 원합니다. mmap
에 대한 파이썬 문서에 따르면 길이가 파일의 현재의 사이즈보다 큰 경우
, 파일이 나는 다양한 권한으로 주위를 해본 적이
길이 바이트를 포함하도록 확장되어, 하지만 그 파일에 대해 'r+b'
이라고 생각하고 ACCESS_WRITE
지도에 맞을 것입니다.
이것은 비글 본 Linux 상자에 있습니다. BTW, 나는 with open(...) as f:
패턴을 사용했을 것입니다. 그러나이 경우에는 함수가 반환 된 후에도 mmap이 열려 있어야합니다.
감사합니다. 나는 문서를 다시 읽고 윈도우 섹션을 읽고 있다는 것을 깨달았다. 다음은 고정 크기로 파일을 작성하는 다른 방법입니다.이 방법은 조금 더 빠릅니다. http://stackoverflow.com/questions/8816059/create-file-of-particular-size-in-python –
@MarkLakata 좋은 트릭, 공유 주셔서 감사합니다. –