Thư viện hệ điều hành Python được sử dụng để liệt kê các tệp trong một thư mục. Phương thức Python os.listdir () trả về danh sách mọi tệp và thư mục trong một thư mục. Hàm os.walk () trả về danh sách mọi tệp trong toàn bộ cây tệp.
Thông thường, khi làm việc với các tệp bằng Python, bạn sẽ gặp phải các tình huống mà bạn muốn liệt kê các tệp trong một thư mục. Ví dụ:bạn có thể muốn tìm tất cả các tệp Python trong một thư mục.
Thư viện hệ điều hành Python cung cấp một số phương thức có thể được sử dụng để liệt kê các tệp trong một thư mục. Hướng dẫn này sẽ thảo luận về cách sử dụng os.listdir () để lấy các tệp và thư mục trong một giám đốc. Chúng ta cũng sẽ nói về việc sử dụng os.walk () để tải các tệp và thư mục trong thư mục và trong các thư mục con của nó.
Thư viện hệ điều hành Python
Thư viện hệ điều hành Python cung cấp một số hàm mà bạn có thể sử dụng để làm việc với hệ điều hành. Các chức năng có trong mô-đun hệ điều hành hoạt động trên bất kỳ hệ điều hành hiện đại nào, cho dù đó là Windows, Linux hay Mac.
Vì os là một thư viện bên ngoài, chúng ta cần nhập nó vào mã của mình trước khi bắt đầu sử dụng. Chúng ta có thể làm như vậy bằng cách sử dụng câu lệnh nhập Python:
import os
Bây giờ chúng tôi đã nhập thư viện hệ điều hành vào mã của mình, chúng tôi có thể bắt đầu sử dụng các chức năng của nó để liệt kê các mục trong một thư mục.
Python os.listdir ()
Trong Python, os.listdir () phương thức liệt kê các tệp và thư mục trong một thư mục nhất định. Phương thức này không trả về các mục nhập đặc biệt như ‘.’ Và ‘..’ mà hệ điều hành sử dụng để điều hướng qua các thư mục khác nhau.
os.listdir () cũng không trả về các tệp và thư mục vượt quá cấp thư mục đầu tiên. Nói cách khác, os.listdir () không trả về bất kỳ thứ gì trong các thư mục con được phương pháp này phát hiện.
81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia chương trình đào tạo. Kết hợp với bootcamp ngay hôm nay.
Sinh viên tốt nghiệp bootcamp trung bình dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.
Hàm os.listdir () chấp nhận một tham số:đường dẫn tệp của thư mục có tên tệp và thư mục bạn muốn truy xuất.
Đây là cú pháp cho phương thức listdir:
os.listdir(path)
Hãy xem qua một ví dụ để giới thiệu cách sử dụng phương pháp này trong một chương trình Python.
os.listdir () Ví dụ Python
Giả sử rằng chúng tôi đang tạo một chương trình phân tích hiệu suất thị trường chứng khoán của Netflix trong thập kỷ qua. Chúng tôi có một thư mục (tên:/ home / data_analysis / netflix) với tất cả dữ liệu thô và trước khi chương trình của chúng tôi bắt đầu chạy, chúng tôi muốn kiểm tra để đảm bảo rằng tệp raw_data_2019.csv tồn tại trong thư mục đó.
Để hoạt động bình thường, chương trình của chúng tôi cần tệp cụ thể đó được lưu trữ trong thư mục cụ thể đó.
Chúng tôi có thể sử dụng mã sau để truy xuất danh sách các tệp trong / home / data_analysis / netflix thư mục công việc:
import os path = '/home/data_analysis/netflix' files = os.listdir(path) for f in files: print(f)
Chương trình của chúng tôi truy xuất danh sách tất cả các tệp và thư mục trong thư mục được chỉ định và trả về như sau:
README.md app.py raw_data_2016.csv raw_data_2017.csv raw_data_2018.csv raw_data_2019.csv processed_data
Bây giờ, chúng tôi có thể kiểm tra xem tệp raw_data_2019.csv nằm trong thư mục. Như bạn có thể thấy, đó là.
Hãy chia nhỏ mã của chúng ta. Trên dòng đầu tiên, chúng tôi nhập mô-đun os mà chúng tôi cần thực hiện để truy cập vào os.listdir () chức năng. Sau đó, chúng tôi khai báo một biến Python có tên là đường dẫn , nơi lưu trữ tên của đường dẫn có nội dung mà chúng tôi muốn truy xuất.
Trên dòng tiếp theo, chúng tôi sử dụng phương thức os.listdir () để nhận danh sách các tệp và thư mục trong / home / data_analysis / netflix danh mục. Cuối cùng, chúng tôi tạo một vòng lặp Python for. Vòng lặp này lặp lại mọi mục trong danh sách do os.listdir () tạo ra . Chúng tôi in ra tên của mỗi tệp vào bảng điều khiển bằng cách sử dụng câu lệnh Python print ().
/ home / data_analysis / netflix thư mục chứa sáu tệp và một thư mục. Thư mục được gọi là dữ liệu được xử lý và có thể phân biệt được với các tệp khác vì nó không có phần mở rộng.
Python os.walk ()
os.walk () hàm truy xuất danh sách các tệp chứa trong một cây. Phương thức lặp qua từng thư mục trong một cây. Sau đó, os.walk () trả về tên của mọi tệp và thư mục trong một thư mục và bất kỳ thư mục con nào của nó.
Cú pháp cho os.walk () như sau:
os.walk(top, topdown, onerror, followlinks)
os.walk () phương thức chấp nhận bốn tham số:
- hàng đầu là thư mục trên cùng có tên tệp thành phần và thư mục bạn muốn truy xuất (bắt buộc)
- từ trên xuống , khi được đặt thành True, chỉ định rằng các thư mục sẽ được quét từ trên xuống. Nếu giá trị này được đặt thành Sai, các thư mục sẽ được quét từ dưới lên (tùy chọn)
- onerror cung cấp trình xử lý lỗi nếu gặp lỗi (tùy chọn)
- liên kết theo dõi , nếu được đặt thành True, sẽ truy cập các thư mục được tham chiếu bởi liên kết hệ thống (tùy chọn)
Chúng tôi sẽ tập trung vào hai tham số đầu tiên vì onerror và followlinks nâng cao hơn và không được sử dụng phổ biến.
os.walk () Ví dụ Python
Giả sử chúng tôi muốn truy xuất tên của tất cả các tệp trong / home / data_analysis / netflix danh mục. Chúng tôi cũng muốn tìm hiểu những gì được bao gồm trong tất cả các thư mục con trong thư mục đó.
Như chúng ta đã thảo luận ở trên, netflix thư mục chứa một thư mục: data_data đã xử lý . Chúng tôi có thể sử dụng mã sau để truy xuất tên của tất cả các tệp trong / home / data_analysis / netflix thư mục và các thư mục con của nó:
import os path = '/home/data_analysis/netflix' for root, directories, files in os.walk(path, topdown=False): for name in files: print(os.path.join(root, name)) for name in directories: print(os.path.join(root, name))
Đây là kết quả từ mã của chúng tôi:
/home/data_analysis/netflix/README.md /home/data_analysis/netflix/app.py /home/data_analysis/netflix/raw_data_2016.csv /home/data_analysis/netflix/raw_data_2017.csv /home/data_analysis/netflix/raw_data_2018.csv /home/data_analysis/netflix/raw_data_2019.csv /home/data_analysis/netflix/processed_data /home/data_analysis/netflix/processed_data/final.csv
Chúng tôi nhập mô-đun hệ điều hành mà từ đó chúng tôi tham chiếu đến os.walk () và os.path.join () sau này trong mã của chúng tôi. Sau đó, chúng tôi khai báo một biến có tên là đường dẫn , nơi lưu trữ đường dẫn có tên tệp mà chúng tôi muốn khám phá.
Sau đó, chúng tôi tạo một cho vòng lặp sử dụng os.walk () để truy xuất danh sách tất cả các tệp và thư mục trong đường dẫn danh mục. Vòng lặp đó lặp lại qua các tệp và thư mục mà os.walk () trả về. Điều đáng chú ý là chúng tôi chỉ định topdown =False trong tham số os.walk () , phương thức này yêu cầu mã của chúng tôi thực hiện tìm kiếm từ trên xuống.
cho của chúng tôi vòng lặp lặp qua từng tệp và thư mục được phát hiện bởi phương thức os.walk () bằng cách sử dụng thêm for các vòng lặp. Chúng tôi in các tệp trong os.walk () ra bảng điều khiển.
Trong mã của chúng tôi ở trên, đây là for của chúng tôi vòng lặp:
for root, directories, files in os.walk(path): for name in files: print(os.path.join(root, name)) for name in directories: print(os.path.join(root, name))
Sau đó, chương trình của chúng tôi sử dụng os.path.join () để kết hợp thư mục gốc của mỗi tệp với nhau ( tức là / home / data_analysis / netflix ) và tên của tệp (tức là raw_datra_2019.csv ). Thư mục gốc đề cập đến đường dẫn thư mục chứa tệp.
Kết luận
Bạn có thể sử dụng Python listdir () phương pháp để làm điều này. Bạn cũng có thể sử dụng walk () phương thức liệt kê mọi thứ trong một thư mục, bao gồm bất kỳ thứ gì trong các thư mục con.
Hướng dẫn này đã khám phá, cung cấp các ví dụ, cách sử dụng os.listdir () và os.walk () các phương pháp liệt kê các tệp và thư mục trong một thư mục bằng Python. Bây giờ bạn có các kỹ năng cần thiết để liệt kê các tệp trong thư mục bằng Python như một chuyên gia!
Để tìm hiểu thêm về cách viết mã bằng Python, hãy đọc toàn bộ hướng dẫn Cách học Python của chúng tôi.