Không thể khó, nhưng tôi có một khối tâm thần.
Không thể khó, nhưng tôi có một khối tâm thần.
Câu trả lời:
import os
os.listdir("path") # returns list
Một chiều:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
Các glob.glob
phương pháp trên sẽ không liệt kê các tập tin ẩn.
Vì ban đầu tôi đã trả lời câu hỏi này nhiều năm trước, pathlib đã được thêm vào Python. Cách ưa thích của tôi để liệt kê một thư mục bây giờ thường liên quan đến iterdir
phương thức trên Path
các đối tượng:
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
['c:\\users']
glob.glob(r'c:\users\*')
(toàn cầu nó không thực sự liệt kê các thư mục, nhưng mở rộng các dấu sao và như vậy sẽ hoàn thành một nhiệm vụ tương tự).
os.walk
có thể được sử dụng nếu bạn cần đệ quy:
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)
glob.glob
hoặc os.listdir
sẽ làm điều đó.
import glob
ENTER glob.glob(r'c:\users')
ENTER dường như chỉ trở lại ['c:\\users']
. Tại sao vậy? Tôi muốn sử dụng global.glob vì như những người dùng khác đã chỉ ra, nó được cho là trả về nội dung của một thư mục đồng thời bỏ qua các tệp ẩn. Điều này quan trọng.
glob
:glob.glob(r'c:\users\*')
Kể từ Python 3.5, bạn có thể sử dụng os.scandir
.
Sự khác biệt là nó trả về các mục nhập tệp không phải tên. Trên một số HĐH như windows, điều đó có nghĩa là bạn không cần phải os.path.isdir/file
biết đó có phải là tệp hay không và điều đó giúp tiết kiệm thời gian của CPU vì stat
đã được thực hiện khi quét dir trong Windows:
ví dụ để liệt kê một thư mục và in các tệp lớn hơn max_value
byte:
for dentry in os.scandir("/path/to/dir"):
if dentry.stat().st_size > max_value:
print("{} is biiiig".format(dentry.name))
(đọc câu trả lời dựa trên hiệu suất rộng rãi của tôi ở đây )
Dưới đây mã sẽ liệt kê các thư mục và các tập tin trong thư mục. Một cái khác là 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)
.XYZ
các tệp trong ngữ cảnh hệ thống tệp Unix), khi được sử dụng vớiglob.glob("/home/username/www/.*")
?