Python을 사용하면 파일 시스템 검색을 기반으로 파일 정보 개체 배열을 어떻게 얻습니까?
문제
현재는 Bash 스크립트가 있습니다 find
그렇게 명령 :
find /storage/disk-1/Media/Video/TV -name *.avi -mtime -7
이것은 지난 7 일 동안 내 시스템에 추가 된 TV 프로그램 목록을 얻습니다. 그런 다음 계속해서 상징적 인 링크를 만들어 최신 TV 쇼를 할 수 있습니다.
나는 이것을 Python으로 다시 코딩하려고하지만 Google을 사용하기위한 답을 찾을 수있는 몇 가지 질문이 있습니다 (아마도 올바른 것을 찾고 있지 않을 수도 있습니다). 이것을 요약하는 가장 좋은 방법은 다음과 같은 질문입니다.
내 파일 시스템에서 검색을 수행하려면 어떻게해야합니까 (전화해야합니까? find
?) 날짜 및 기타 것들에 따라 정렬 할 수 있도록 파일 정보 개체 (수정 날짜, 파일 이름 등) 배열을 제공합니까?
해결책
import os, time
allfiles = []
now = time.time()
# walk will return triples (current dir, list of subdirs, list of regular files)
# file names are relative to dir at first
for dir, subdirs, files in os.walk("/storage/disk-1/Media/Video/TV"):
for f in files:
if not f.endswith(".avi"):
continue
# compute full path name
f = os.path.join(dir, f)
st = os.stat(f)
if st.st_mtime < now - 3600*24*7:
# too old
continue
allfiles.append((f, st))
쌍 목록 (파일 이름, STAT 결과)로 반환 된 모든 파일도 반환됩니다.
다른 팁
모듈 OS를 살펴보십시오 : os.walk는 파일 시스템을 걷는 기능입니다. os.path는 파일 MTime 및 기타 파일 정보를 제공하는 모듈입니다. 또한 OS.Path는 파싱 및 분할을위한 많은 기능을 정의합니다.
또한 관심있는 모듈 Glob은 "글로브"문자열에 대한 기능을 정의합니다 (UNIX 와일드 카드 규칙을 사용하여 문자열 일치)
이를 통해 일부 기준과 일치하는 파일 목록을 작성하는 것은 쉬워야합니다.
- "하위 프로세스"모듈을 통해 "찾기"를 사용할 수 있습니다.
- 그런 다음 "분할"문자열 함수를 사용하여 각 줄을 해부합니다.
- 각 파일에 대해 OS 모듈 (예 : GetMtime 등)을 사용하여 파일 정보를 얻습니다.
또는
- "Walk"및 "Glob"모듈을 사용하여 객체에서 파일 경로를 가져옵니다.
제휴하지 않습니다 StackOverflow