kernel32.dll을 사용하여 파일을 읽어야합니다. CreateFile, SetFilePointer 및 ReadFile 메서드에 대해 읽었습니다 (필자는이 메서드를 사용해야합니다). 그러나이를 적용하는 방법을 모르겠습니다.kernel32.dll (파이썬) 파일 읽기
앞서 언급했듯이 at msdn 모든 인수를 지정해야합니다. 처음에는 파일 경로이지만 다른 인수는 무엇인지, 그리고 어떤 방법으로 삽입해야하는지 전혀 알지 못합니다.
누구나 kernel32.dll CreateFile, SetFilePointer 및 ReadFile에서 "howto"를 도울 수 있습니까?
정말 감사드립니다.
업데이트
내가 KERNEL32를 사용하려고하는 이유는 내가 플래시 드라이브에서 읽을 수있는 정말 - 정말 빠른 방법이 필요하다는 것입니다. 파일 시스템에서 시간을 보내지 않고 플래시에서 직접 읽을 수있는 방법이 필요합니다. 이것은 필자가 파일 시스템에서 긴 검색을하지 않고도 필요한 바이트에 직접 액세스한다는 것을 의미합니다.
여기입니다 코드는 내가이 코드는 기가 USB를 통해 파일 하나를 찾기 위해 약 8 분 정도 걸립니다
index = 524288
data = open('Path-to-file', 'rb')
while index < file_length:
data.seek(index)
headers.append((index, data.read(128)))
index += cluster
data.close()
를 읽는 데 사용.
4 분에 완료해야합니다.
누군가 다른 방법으로 할 수있는 제안이 있다면 - 정말 고맙겠습니다.
이 같은 win32file (pywin32를) 시도
업데이트 : 그것은 파이썬보다 더 많은 시간 (12 분) 소요
def get_headers(self):
while self.index < self.file_len:
handle = win32file.CreateFile(self.path, win32file.GENERIC_READ,
win32file.FILE_SHARE_READ, None,
win32file.OPEN_EXISTING,
win32file.FILE_ATTRIBUTE_NORMAL, None)
win32file.SetFilePointer(handle, self.index, win32file.FILE_CURRENT)
header_ = win32file.ReadFile(handle, 128, None)
header = header_[1]
self.headers.append((self.index, header))
self.index += cluster
win32file.CloseHandle(handle)
"추구"와 기능 "읽기". Windows dll에 대한 모듈 사용이 읽기 시간을 늘리는 이유를 아는 사람 있습니까?
플래시 드라이브가 파일 시스템을 사용하지 않습니까? –
드라이브의 원시 바이트에 액세스하거나 파일의 위치를 탐색하려고합니까? (원시 수준 인 경우 상위 수준 인터페이스가 도움이되는지 확신 할 수 없음). 파일 내에 있으면 파이썬 코드를 사용하십시오. 기본 파일 액세스는 아마도 C 기반이며 더 낮은 수준의 언어로 가지 않고도 얻을 수있는 속도만큼 빠릅니다. 또한 엄지 드라이브의 파일 시스템은 무엇입니까? – dhj
파일 시스템은 FAT32입니다.여기 내가 뭘하려고하는지 : 원시 바이트가있는 이진 파일이 있습니다. 각 클러스터의 시작 부분에서 헤더를 읽고 저장해야합니다. C로 쓰기 ** 읽기 ** 시도해 볼만한 가치가 있습니까? – Julia