[python] seek () 함수?

여기에서 내 혼란을 용서하십시오.하지만 파이썬에서 seek () 함수에 관한 문서를 읽었습니다 (사용해야 함). 도움이되었지만 실제로 수행하는 작업의 실제 의미에 대해 약간 혼란 스럽습니다. 감사합니다, 감사합니다.



답변

에 관해서는 seek()너무 걱정할 것이 없습니다.

우선 열린 파일을 조작 할 때 유용합니다.

구문은 다음과 같습니다.

fp.seek(offset, from_what)

fp작업중인 파일 포인터는 어디에 있습니까 ? offset얼마나 많은 위치를 이동할 것인지를 의미합니다. from_what참조 포인트를 정의합니다.

  • 0 : 참조 점이 파일 의 시작 임을 의미합니다.
  • 1 : 기준점이 현재 파일 위치 임을 의미합니다.
  • 2 : 참조 점이 파일 의 끝임 을 의미합니다.

생략하면 from_what기본값은 0입니다.

파일을 관리 할 때 항상 현재 작업중인 파일 내 위치가 있다는 것을 잊지 마십시오. 방금 열면 해당 위치가 파일의 시작이지만 작업하면서 진행할 수 있습니다. 이동하는 경로처럼 열려있는 파일
seekwalk따라야 할 때 유용합니다 .


답변

파일을 열면 시스템은 파일의 시작 부분을 가리 킵니다. 읽기 또는 쓰기는 처음부터 발생합니다. 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 +”를 사용하면 커서 위치에 관계없이 파일 끝에 쓰기 (추가) 만 가능합니다.


답변