안녕하세요. 언휴예요.
Python의 파일 개체에는 작업 위치를 변경하는 seek 메서드와 위치를 확인하는 tell 메서드를 제공하고 있어요.
seek 메서드는 이동할 offset과 기준 위치를 전달할 수 있습니다. 만약 이동할 offset만 전달하면 파일의 시작 위치에서 offset 바이트 이동하는 것입니다. 만약 기준 위치를 1을 전달하면 현재 작업 위치에서 상대적 위치로 양수와 음수 모두 사용할 수 있습니다. 기준 위치가 2를 전달하면 파일의 끝에서부터 이동입니다. 일반적으로 기준 위치가 2일 때는 음수를 전달합니다.
다음은 파일의 내용이 회문(앞 뒤가 똑같은 문장)인지 판별하는 예제 코드입니다.
#Palindrome fname = input("파일명:") try: fs = open(fname,"rb") data = fs.read() print("파일 데이터:",data) fs.seek(0,2)#파일 끝에서 0바이트 이동(파일 끝으로 이동) fsize = fs.tell() print("파일 크기:",fsize,"bytes") pflag = True for i in range(0,fsize): fs.seek(i) #파일 시작에서 i바이트 이동 bd = fs.read(1) fs.seek(-(i+1),2) #파일 끝에서 (i+1)바이트 이전으로 이동 ad = fs.read(1) if(bd != ad): pflag = False break fs.close() if pflag: print("회문입니다.") else: print("회문이 아닙니다.") except: print("예외가 발생하였습니다.")