[카테고리:] <span>미래실험실 pYTHON</span>

안녕하세요. 언휴예요.

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("예외가 발생하였습니다.")
[그림 1] 파일 내용이 회문인지 판별 - seek, tell 이용
[그림 1] 파일 내용이 회문인지 판별 – seek, tell 이용

미래실험실 pYTHON