[파이썬] os `os.futimens()`, `os.utimensat()`로 파일 시간 속성 변경

파일 시간 속성은 파일의 생성 시간, 수정 시간 및 액세스 시간입니다. 파이썬 os 모듈에는 파일 시간 속성을 변경하는 두 가지 메서드가 있습니다. os.futimens()os.utimensat() 메서드입니다.

os.futimens()

os.futimens() 메서드는 파일의 액세스 시간과 수정 시간을 변경합니다. 파일 디스크립터를 사용하여 파일을 지정하고, 변경할 시간 값을 넘겨줍니다. 시간 값은 float으로 나타내어야 합니다.

다음은 os.futimens() 메서드를 사용하여 파일의 시간 속성을 변경하는 예시 코드입니다.

import os
import time

filename = 'example.txt'
access_time = time.time() - 3600  # 1시간 전
modification_time = time.time() - 1800  # 30분 전

with open(filename, 'a'):
    pass  # 파일을 생성하고 디스크립터를 가져옵니다.

fd = os.open(filename, os.O_RDWR)  # 파일 디스크립터를 가져옵니다.
os.futimens(fd, (access_time, modification_time))  # 파일 시간 속성을 변경합니다.
os.close(fd)

이 예제에서는 example.txt 파일의 액세스 시간을 현재 시간보다 1시간 전으로, 수정 시간을 현재 시간보다 30분 전으로 변경하고 있습니다.

os.utimensat()

os.utimensat() 메서드는 파일의 액세스 시간과 수정 시간을 변경합니다. os.utime() 메서드와 유사하지만, 파일 경로 대신 디렉토리 디스크립터를 사용하여 파일을 지정합니다.

다음은 os.utimensat() 메서드를 사용하여 파일의 시간 속성을 변경하는 예시 코드입니다.

import os
import time

filename = 'example.txt'
access_time = time.time() - 3600  # 1시간 전
modification_time = time.time() - 1800  # 30분 전

with open(filename, 'a'):
    pass  # 파일을 생성하고 디스크립터를 가져옵니다.

dir_fd = os.open('.', os.O_RDONLY)  # 현재 디렉토리의 디스크립터를 가져옵니다.
os.utimensat(dir_fd, filename, (access_time, modification_time))  # 파일 시간 속성을 변경합니다.
os.close(dir_fd)

이 예제에서는 현재 디렉토리의 파일인 example.txt의 액세스 시간을 현재 시간보다 1시간 전으로, 수정 시간을 현재 시간보다 30분 전으로 변경하고 있습니다.


위의 예시 코드를 사용하여 os.futimens()os.utimensat() 메서드를 사용하여 파일의 시간 속성을 변경할 수 있습니다. 이는 파일 관리 및 데이터 처리 시에 유용하게 사용될 수 있습니다.