파이썬에서 디렉토리의 내용을 어떻게 나열합니까?


답변:



52

일방 통행:

import os
os.listdir("/home/username/www/")

다른 방법 :

glob.glob("/home/username/www/*")

여기에 예가 있습니다 .

glob.glob위 의 방법은 숨겨진 파일을 나열하지 않습니다.

원래 몇 년 전에이 질문에 대답 했으므로 pathlib 가 Python에 추가되었습니다. 디렉토리를 나열하는 선호하는 방법은 일반적 iterdir으로 Path객체에 대한 메소드와 관련이 있습니다.

from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")

.XYZ와 함께 사용될 때 glob.glob가 숨겨진 파일을 나열 glob.glob("/home/username/www/.*")합니까?
Andy Finkenstadt

예, 점으로 시작하는 파일을 의미합니다. 당신이 준 예제는 숨겨진 파일 (및 숨겨진 파일 만)을 일치시키는 데 효과적입니다.
Trey Hunner

방금 glob을 가져 와서 glob.glob (r'c : \ users ')를 사용했지만 반환 만 됨['c:\\users']
Musixauce3000

1
@ Musixauce3000 : 당신은하고 싶을 것입니다 glob.glob(r'c:\users\*')(실제로 디렉토리를 나열하지는 않지만 별표를 확장하여 비슷한 작업을 수행합니다).
Trey Hunner

38

os.walk 재귀가 필요한 경우 사용할 수 있습니다.

import os
start_path = '.' # current directory
for path,dirs,files in os.walk(start_path):
    for filename in files:
        print os.path.join(path,filename)

18

glob.glob아니면 os.listdir할 것입니다.


import globENTER glob.glob(r'c:\users')ENTER 만 반환되는 것 같습니다 ['c:\\users']. 왜 그런 겁니까? 다른 사용자가 지적했듯이 숨겨진 파일을 무시하고 디렉토리의 내용을 반환하기 때문에 glob.glob를 사용하고 싶습니다. 이건 중요하다.
Musixauce3000

다음과 glob같이 와일드 카드를 지정해야하기 때문입니다 .glob.glob(r'c:\users\*')
Jean-François Fabre

14

os모듈 핸들 모든 물건.

os.listdir(path)

경로로 주어진 디렉토리에있는 항목의 이름을 포함하는 목록을 리턴하십시오. 목록은 임의의 순서입니다. 특수 항목 '.'은 포함되지 않습니다. 그리고 디렉토리에 존재하더라도 '..'.

가용성 : 유닉스, Windows.


4

Python 3.4 이상에서는 새로운 pathlib패키지를 사용할 수 있습니다 .

from pathlib import Path
for path in Path('.').iterdir():
    print(path)

Path.iterdir()이터레이터를 반환합니다 list.

contents = list(Path('.').iterdir())

3

Python 3.5부터 사용할 수 있습니다 os.scandir.

차이점은 이름이 아닌 파일 항목을 반환한다는 것 입니다. Windows와 같은 일부 OS os.path.isdir/file에서는 파일인지 여부를 알 필요가 없으며 statWindows에서 dir을 스캔 할 때 이미 수행되었으므로 CPU 시간이 절약 됩니다.

디렉토리를 나열하고 max_value바이트 보다 큰 파일을 인쇄하는 예 :

for dentry in os.scandir("/path/to/dir"):
    if dentry.stat().st_size > max_value:
       print("{} is biiiig".format(dentry.name))

( 여기 에서 광범위한 성능 기반 답변을 읽으 십시오 )


2

아래 코드는 디렉토리 내의 디렉토리와 파일을 나열합니다. 다른 하나는 os.walk입니다

def print_directory_contents(sPath):
        import os                                       
        for sChild in os.listdir(sPath):                
            sChildPath = os.path.join(sPath,sChild)
            if os.path.isdir(sChildPath):
                print_directory_contents(sChildPath)
            else:
                print(sChildPath)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.