Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 디렉터리 내 모든 파일을 재귀적으로 터치(Touch)하는 방법

리눅스의 touch 명령어처럼 파일의 타임스탬프를 갱신하는 작업을 Python에서 수행하려면, os.walk를 사용해 디렉터리 트리를 순회하면서 각 파일에 대해 os.utime() 함수를 호출하면 됩니다.

예제 1: os.walk와 os.utime 사용하기

import os

# 디렉터리 트리를 재귀적으로 순회
for root, dirs, files in os.walk(path):
    for file in files:
        # 파일의 수정 시간을 현재 시간으로 설정
        os.utime(os.path.join(root, file))

os.walk(path)는 지정한 경로를 루트로 하는 모든 하위 디렉터리를 재귀적으로 탐색합니다. 각 반복에서 현재 디렉터리 경로(root), 하위 디렉터리 목록(dirs), 그리고 파일 목록(files)을 반환하며, 이를 이용해 전체 트리의 모든 파일에 접근할 수 있습니다.

os.utime()에 인자를 전달하지 않으면 해당 파일의 접근 시간(atime)과 수정 시간(mtime)이 현재 시간으로 갱신됩니다. 이것이 바로 터치(touch) 동작입니다.

예제 2: pathlib 모듈 활용하기 (Python 3.4+)

Python 3.4 이상에서는 pathlib 모듈의 touch() 메서드를 직접 사용할 수 있어 코드가 더욱 간결해집니다.

from pathlib import Path
import os

# 디렉터리 트리를 재귀적으로 순회
for root, dirs, files in os.walk(path):
    for file in files:
        Path(os.path.join(root, file)).touch()

정리

  • os.utime(경로): 파일의 타임스탬프를 현재 시간으로 갱신하는 전통적인 방식
  • Path(경로).touch(): Python 3.4 이상에서 사용 가능한 객체지향적이고 직관적인 방식
  • pathlib는 경로 처리를 더 안전하고 가독성 있게 만들어 주므로, 최신 프로젝트에서는 두 번째 방법을 권장합니다.