Python을 사용하면 파일 시스템 검색을 기반으로 파일 정보 개체 배열을 어떻게 얻습니까?

StackOverflow https://stackoverflow.com/questions/1617666

  •  06-07-2019
  •  | 
  •  

문제

현재는 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"모듈을 사용하여 객체에서 파일 경로를 가져옵니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top