여기에서 내 혼란을 용서하십시오.하지만 파이썬에서 seek () 함수에 관한 문서를 읽었습니다 (사용해야 함). 도움이되었지만 실제로 수행하는 작업의 실제 의미에 대해 약간 혼란 스럽습니다. 감사합니다, 감사합니다.
답변
에 관해서는 seek()
너무 걱정할 것이 없습니다.
우선 열린 파일을 조작 할 때 유용합니다.
구문은 다음과 같습니다.
fp.seek(offset, from_what)
fp
작업중인 파일 포인터는 어디에 있습니까 ? offset
얼마나 많은 위치를 이동할 것인지를 의미합니다. from_what
참조 포인트를 정의합니다.
- 0 : 참조 점이 파일 의 시작 임을 의미합니다.
- 1 : 기준점이 현재 파일 위치 임을 의미합니다.
- 2 : 참조 점이 파일 의 끝임 을 의미합니다.
생략하면 from_what
기본값은 0입니다.
파일을 관리 할 때 항상 현재 작업중인 파일 내 위치가 있다는 것을 잊지 마십시오. 방금 열면 해당 위치가 파일의 시작이지만 작업하면서 진행할 수 있습니다. 이동하는 경로처럼 열려있는 파일
seek
을 walk
따라야 할 때 유용합니다 .
답변
파일을 열면 시스템은 파일의 시작 부분을 가리 킵니다. 읽기 또는 쓰기는 처음부터 발생합니다. seek()
파일의 다른 부분에 포인터를 읽거나 그 장소에서 쓰기 수 있음을 조작 이동합니다.
따라서 전체 파일을 읽으려면 처음 20 바이트를 건너 뛰고 파일을 열고 seek(20)
읽기를 시작할 위치로 이동 한 다음 파일을 계속 읽으십시오.
또는 10 번째 바이트마다 읽고 싶다면 seek(9, 1)
(현재 위치를 기준으로 9 바이트 앞으로 이동), read(1)
(1 바이트 읽기) 반복 하는 루프를 작성할 수 있습니다.
답변
seek
의으로 기대할 함수는 오프셋 (바이트).
Ascii 파일 예 :
따라서 다음 내용이 포함 된 텍스트 파일이있는 경우 :
simple.txt
abc
다음과 같이 1 바이트 를 건너 뛰어 첫 번째 문자를 건너 뛸 수 있습니다 .
fp = open('simple.txt', 'r')
fp.seek(1)
print fp.readline()
>>> bc
폭을 수집하는 바이너리 파일 예제 :
fp = open('afile.png', 'rb')
fp.seek(16)
print 'width: {0}'.format(struct.unpack('>i', fp.read(4))[0])
print 'height: ', struct.unpack('>i', fp.read(4))[0]
참고 : 전화를 걸면
read
읽기 헤드의 위치가 변경seek
됩니다.
답변
문자열의 경우 WHENCE를 사용하지 마십시오. 파일 시작 위치에 f.seek (0)을 사용하고 파일 끝 위치에 f.seek (len (f) +1)을 사용하십시오. open (file, “r +”)을 사용하여 파일의 아무 곳에서나 읽고 쓸 수 있습니다. “a +”를 사용하면 커서 위치에 관계없이 파일 끝에 쓰기 (추가) 만 가능합니다.
답변
