pathlib.Path.rglob Show Sử dụng 6 từ mô -đun 7, được giới thiệu trong Python 3.5.
Nếu bạn không muốn sử dụng pathlib, sử dụng có thể sử dụng 8, nhưng đừng quên vượt qua tham số từ khóa 9 và nó sẽ sử dụng khoảng thời gian không phù hợp cho các thư mục lớn.Cho các trường hợp các tệp khớp bắt đầu bằng một dấu chấm ( 0); Giống như các tệp trong thư mục hiện tại hoặc các tệp ẩn trên hệ thống dựa trên UNIX, hãy sử dụng giải pháp 1 bên dưới.os.walk Đối với các phiên bản Python cũ hơn, hãy sử dụng 1 để đi bộ một cách đệ quy một thư mục và 3 để khớp với một biểu thức đơn giản:
Đã trả lời ngày 2 tháng 2 năm 2010 lúc 18:26Feb 2, 2010 at 18:26
Johan Dahlinjohan DahlinJohan Dahlin 24.1k6 Huy hiệu vàng40 Huy hiệu bạc52 Huy hiệu đồng6 gold badges40 silver badges52 bronze badges 13 Đối với Python> = 3.5, bạn có thể sử dụng 4, 5:
Python 3.6 Bản demo Đã trả lời ngày 25 tháng 8 năm 2019 lúc 9:45Aug 25, 2019 at 9:45
Pedro lobitopedro lobitoPedro Lobito 88.9K30 Huy hiệu vàng239 Huy hiệu bạc257 Huy hiệu Đồng30 gold badges239 silver badges257 bronze badges 3 Tương tự như các giải pháp khác, nhưng sử dụng fnmatch.fnmatch thay vì glob, vì os.walk đã liệt kê các tên tệp:
Ngoài ra, sử dụng một trình tạo làm cho bạn xử lý từng tệp như được tìm thấy, thay vì tìm tất cả các tệp và sau đó xử lý chúng.
Johan Dahlin 24.1k6 Huy hiệu vàng40 Huy hiệu bạc52 Huy hiệu đồng6 gold badges40 silver badges52 bronze badges Đối với Python> = 3.5, bạn có thể sử dụng 4, 5:Feb 2, 2010 at 18:44
Nếu đệ quy là 6, mẫu 4 sẽ khớp với bất kỳ tệp nào và không hoặc nhiều hoặc nhiều hơn 8 và 9. Nếu mẫu được theo sau bởi một 0, chỉ có các thư mục và 9.Bruno OliveiraPython 3.6 Bản demo4 gold badges41 silver badges39 bronze badges 0 Đã trả lời ngày 25 tháng 8 năm 2019 lúc 9:45
https://github.com/miracle2k/python-glob2/ Pedro lobitopedro lobito
88.9K30 Huy hiệu vàng239 Huy hiệu bạc257 Huy hiệu Đồng Tương tự như các giải pháp khác, nhưng sử dụng fnmatch.fnmatch thay vì glob, vì os.walk đã liệt kê các tên tệp:26 gold badges149 silver badges179 bronze badges Ngoài ra, sử dụng một trình tạo làm cho bạn xử lý từng tệp như được tìm thấy, thay vì tìm tất cả các tệp và sau đó xử lý chúng.Jun 26, 2011 at 14:14
4 Johan Dahlin
Đã trả lời ngày 2 tháng 2 năm 2010 lúc 18:44 Starting with Python 3.5, the same syntax is also supported by 5.Bruno Oliveirabruno OliveiraNov 11, 2014 at 16:08
12.4K4 Huy hiệu vàng41 Huy hiệu bạc39 Huy hiệu đồngtaleinat Tôi đã sửa đổi mô -đun GLOB để hỗ trợ ** cho Globbing đệ quy, ví dụ:1 gold badge29 silver badges42 bronze badges 3
Hữu ích khi bạn muốn cung cấp cho người dùng của mình khả năng sử dụng cú pháp ** và do đó chỉ riêng Os.Walk () không đủ tốt.
MattFeb 2, 2010 at 18:39
73.2K26 Huy hiệu vàng149 Huy hiệu bạc179 Huy hiệu đồngAlex Martelli Đã trả lời ngày 26 tháng 6 năm 2011 lúc 14:14163 gold badges1203 silver badges1382 bronze badges 2 Bắt đầu với Python 3.4, người ta có thể sử dụng phương pháp 2 của một trong các lớp 3 trong mô -đun Pathlib mới, hỗ trợ các ký tự đại diện 4. Ví dụ:Cập nhật: Bắt đầu với Python 3.5, cú pháp tương tự cũng được hỗ trợ bởi 5.Đã trả lời ngày 11 tháng 11 năm 2014 lúc 16:08Feb 2, 2010 at 18:24
TaleinattaleinatGeoff Reedy 8.2111 Huy hiệu vàng29 Huy hiệu bạc42 Huy hiệu đồng3 gold badges54 silver badges77 bronze badges 6 cung cấp cho bạn chính xác các mẫu giống như 7, vì vậy đây thực sự là một sự thay thế tuyệt vời cho 8 với ngữ nghĩa rất gần. Một phiên bản lặp (ví dụ: một trình tạo), IOW thay thế cho 9, là một sự thích ứng tầm thường (chỉ 0 kết quả trung gian khi bạn đi, thay vì 1 về một danh sách kết quả duy nhất để trả về ở cuối).
Đã trả lời ngày 2 tháng 2 năm 2010 lúc 18:39
Alex Martellialex Martelli 0826K163 Huy hiệu vàng1203 Huy hiệu bạc1382 Huy hiệu Đồng 1
Bạn sẽ muốn sử dụng 1 để thu thập các tên tệp phù hợp với tiêu chí của bạn. Ví dụ:
Đã trả lời ngày 2 tháng 2 năm 2010 lúc 18:24Nov 2, 2011 at 8:10
Geoff Reedygeoff Reedyakaihola 33,9K3 Huy hiệu vàng54 Huy hiệu bạc77 Huy hiệu đồng6 gold badges59 silver badges67 bronze badges Dưới đây là một giải pháp với sự hiểu biết danh sách lồng nhau, 1 và kết hợp hậu tố đơn giản thay vì 7:
2hoặc tổng quát như một chức năng: Nếu bạn cần các mẫu kiểu 7 đầy đủ, bạn có thể theo dõi ví dụ của Alex và Bruno và sử dụng 6:May 23, 2019 at
12:11
blueyedpylang 26,5K4 Huy hiệu vàng75 Huy hiệu bạc71 Huy hiệu đồng11 gold badges121 silver badges112 bronze badges 0 3
Đã trả lời ngày 23 tháng 5 năm 2019 lúc 12:11Aug 3, 2020 at 5:10
Pylangpylang 36,5K11 Huy hiệu vàng121 Huy hiệu bạc112 Huy hiệu đồng 4________ 70: Phù hợp với tất cả các tệp kết thúc trong 1 trong thư mục hiện tạios_walk: ~3.6sec rglob ~14.5sec iglob: ~16.9sec ________ 72: Giống như 1 ________ 73: khớp với tất cả các tệp kết thúc trong 1 chỉ trong các thư mục con ngay lập tức, nhưng không phải trong thư mục hiện tạiJun 13, 2020 at 17:39
5: Giống như 1Daniel
1 ________ 77: khớp với tất cả các tệp kết thúc trong 1 trong thư mục hiện tại và trong tất cả các thư mục con 5
mmmmmm 31.7K27 Huy hiệu vàng88 Huy hiệu bạc114 Huy hiệu đồng27 gold badges88 silver badges114 bronze badges Đã trả lời ngày 5 tháng 1 năm 2013 lúc 10:36Jan 5, 2013 at 10:36
Dựa trên các câu trả lời khác, đây là triển khai làm việc hiện tại của tôi, trong đó truy xuất các tệp XML lồng nhau trong thư mục gốc: 6Tôi thực sự vui vẻ với Python :) Đã trả lời ngày 28 tháng 7 năm 2012 lúc 22:09Jul 28, 2012 at 22:09
Daveoncodedaveoncodedaveoncode 18.1K14 Huy hiệu vàng98 Huy hiệu bạc156 Huy hiệu đồng14 gold badges98 silver badges156 bronze badges Johan và Bruno cung cấp các giải pháp tuyệt vời về yêu cầu tối thiểu như đã nêu. Tôi vừa phát hành Formic, trong đó thực hiện các tập tin Ant và Globs có thể xử lý các kịch bản này và phức tạp hơn. Việc thực hiện yêu cầu của bạn là: 7Đã trả lời ngày 15 tháng 5 năm 2012 lúc 8:53May 15, 2012 at 8:53
Andrew Alcockandrew AlcockAndrew Alcock Phim thương hiệu vàng 19.2k44 gold badges41 silver badges60 bronze badges 1 Cho Python 3.5 trở lên 8Hơn nữa bạn có thể cần 9Đã trả lời ngày 21 tháng 6 năm 2019 lúc 21:08Jun 21, 2019 at 21:08
SamisamiSami 7.9748 Huy hiệu vàng66 Huy hiệu bạc95 Huy hiệu Đồng8 gold badges66 silver badges95 bronze badges 1 Một cách khác để làm điều đó chỉ bằng mô -đun GLOB. Chỉ cần tạo ra phương thức RGLOB với thư mục cơ sở bắt đầu và một mẫu để khớp và nó sẽ trả về một danh sách các tên tệp phù hợp. 0Đã trả lời ngày 13 tháng 9 năm 2011 lúc 22:59Sep 13, 2011 at 22:59
Hoặc với một danh sách hiểu: 1Đã trả lời ngày 24 tháng 6 năm 2013 lúc 10:41Jun 24, 2013 at 10:41
Xtoflxtoflxtofl 40K12 Huy hiệu vàng101 Huy hiệu bạc190 Huy hiệu Đồng12 gold badges101 silver badges190 bronze badges Nếu các tệp nằm trên một hệ thống tệp từ xa hoặc bên trong kho lưu trữ, bạn có thể sử dụng một triển khai của lớp FSSPEC Enterrologfilesystem. Ví dụ: để liệt kê tất cả các tệp trong zipfile:remote file system or inside an archive, you can use an implementation of the fsspec AbstractFileSystem class. For example, to list all the files in a zipfile: 2hoặc để liệt kê tất cả các tệp trong nhóm S3 có sẵn công khai: 3Bạn cũng có thể sử dụng nó cho một hệ thống tập tin cục bộ, điều này có thể rất thú vị nếu việc triển khai của bạn phải là hệ thống tập tin-agnostic: 4Các triển khai khác bao gồm Google Cloud, GitHub, SFTP/SSH, Dropbox và Azure. Để biết chi tiết, xem tài liệu API FSSPEC. Đã trả lời ngày 8 tháng 10 năm 2020 lúc 13:49Oct 8, 2020 at 13:49
Gerritgerritgerrit 21.8K16 Huy hiệu vàng89 Huy hiệu bạc164 Huy hiệu đồng16 gold badges89 silver badges164 bronze badges Chỉ cần thực hiện cái này .. nó sẽ in các tệp và thư mục theo cách phân cấp Nhưng tôi đã không sử dụng fnmatch hoặc đi bộ 5Đã trả lời ngày 27 tháng 7 năm 2013 lúc 18:12Jul 27, 2013 at 18:12
Shaurya Guptashaurya GuptaShaurya Gupta 5291 Huy hiệu vàng4 Huy hiệu bạc 6 Huy hiệu Đồng1 gold badge4 silver badges6 bronze badges Mà người ta sử dụng fnmatch hoặc biểu thức chính quy: 6Đã trả lời ngày 2 tháng 8 năm 2013 lúc 16:01Aug 2, 2013 at 16:01
Hipertrackerhipertrackerhipertracker 2.34624 Huy hiệu bạc14 Huy hiệu đồng24 silver badges14 bronze badges Ngoài các câu trả lời được đề xuất, bạn có thể thực hiện điều này với một số thế hệ lười biếng và phép thuật hiểu danh sách: 7Bên cạnh việc lắp một dòng và tránh các danh sách không cần thiết trong bộ nhớ, điều này cũng có tác dụng phụ tốt đẹp, bạn có thể sử dụng nó theo cách tương tự như toán tử **, ví dụ: bạn có thể sử dụng 9 để có được tất cả các tệp .c trong Tất cả các thư mục phụ của SRC có cấu trúc này.Đã trả lời ngày 5 tháng 12 năm 2015 lúc 17:42Dec 5, 2015 at 17:42
f0xdxf0xdxf0xdx 1.27915 huy hiệu bạc19 Huy hiệu đồng15 silver badges19 bronze badges Đây là một mã làm việc trên Python 2.7. Là một phần của công việc DevOps của tôi, tôi được yêu cầu viết một tập lệnh sẽ chuyển các tệp cấu hình được đánh dấu bằng ứng dụng trực tiếp.properies sang appName.properies. Có thể có các tệp tiện ích mở rộng khác cũng như ứng dụng trực tiếp.xml. Dưới đây là mã làm việc cho việc này, tìm thấy các tệp trong các thư mục đã cho (mức lồng nhau) và sau đó đổi tên (di chuyển) nó thành tên tệp cần thiết 8Hàm này được gọi từ một tập lệnh chính 9Hy vọng điều này giúp ai đó đấu tranh với các vấn đề tương tự. Đã trả lời ngày 3 tháng 4 năm 2020 lúc 10:03Apr 3, 2020 at 10:03
Phiên bản đơn giản hóa câu trả lời của Johan Dahlin, không có fnmatch. 0Đã trả lời ngày 3 tháng 6 năm 2013 lúc 1:29Jun 3, 2013 at 1:29
Flowfreeflowfreeflowfree 16.1K12 Huy hiệu vàng49 Huy hiệu bạc76 Huy hiệu đồng12 gold badges49 silver badges76 bronze badges Dưới đây là giải pháp của tôi bằng cách sử dụng danh sách hiểu để tìm kiếm nhiều phần mở rộng tệp một cách đệ quy trong một thư mục và tất cả các thư mục con:multiple file extensions recursively in a directory and all subdirectories: 1Đã trả lời ngày 18 tháng 8 năm 2014 lúc 17:50Aug 18, 2014 at 17:50
2Đã trả lời ngày 27 tháng 1 năm 2014 lúc 19:03Jan 27, 2014 at 19:03 Tôi đã sửa đổi câu trả lời hàng đầu trong bài đăng này .. và gần đây đã tạo tập lệnh này sẽ lặp qua tất cả các tệp trong một thư mục nhất định (searchDir) và các thư mục phụ theo nó ... và in tên tệp, rootDir, ngày sửa đổi/tạo và ngày tạo và kích thước. Hy vọng điều này sẽ giúp ai đó ... và họ có thể đi bộ thư mục và nhận FileInfo. 3Đã trả lời ngày 15 tháng 11 năm 2014 lúc 13:39Nov 15, 2014 at 13:39
Ihightowerihightowerihightower 2.9106 Huy hiệu vàng32 Huy hiệu bạc48 Huy hiệu Đồng6 gold badges32 silver badges48 bronze badges Dưới đây là một giải pháp sẽ phù hợp với mẫu so với đường dẫn đầy đủ và không chỉ tên tệp cơ sở. Nó sử dụng 0 để chuyển đổi mẫu kiểu cầu thành biểu thức chính quy, sau đó được khớp với đường dẫn đầy đủ của mỗi tệp được tìm thấy trong khi đi bộ thư mục. 1 là tùy chọn, nhưng mong muốn trên Windows vì bản thân hệ thống tệp không nhạy cảm với trường hợp. . 4Đã trả lời ngày 30 tháng 6 năm 2015 lúc 15:39Jun 30, 2015 at 15:39
Yoyoyoyoyo 7.8504 Huy hiệu vàng54 Huy hiệu bạc48 Huy hiệu đồng4 gold badges54 silver badges48 bronze badges Tôi cần một giải pháp cho Python 2.x hoạt động nhanh trên các thư mục lớn. Tôi bắt đầu với điều này:python 2.x that works fast on large directories. 5Lưu ý rằng bạn có thể cần một số xử lý ngoại lệ trong trường hợp 2 không tìm thấy bất kỳ tệp phù hợp nào.Đã trả lời ngày 23 tháng 6 năm 2017 lúc 10:20Jun 23, 2017 at 10:20
RomanromanRoman 6778 Huy hiệu bạc16 Huy hiệu Đồng8 silver badges16 bronze badges 3 Làm cách nào để thấy tất cả các phần mở rộng tệp trong Python?Sử dụng mô -đun GLOB, bạn có thể tìm kiếm các tệp với các tiện ích mở rộng nhất định ... hệ điều hành. CHDIR ("my_dir") đặt thư mục làm việc hiện tại thành /my_dir .. Sử dụng một vòng lặp For, bạn có thể tìm kiếm các tệp với. TXT Tiện ích mở rộng sử dụng GLOB () .. * Biểu thị tất cả các tệp với một tiện ích mở rộng nhất định .. Làm thế nào để bạn liệt kê tất cả các tệp trong một thư mục với một tiện ích mở rộng nhất định trong Python?Phương thức Os.ListDir () liệt kê tất cả các tệp có trong một thư mục.Chúng ta có thể sử dụng hệ điều hành.đi bộ () nếu chúng tôi cũng muốn làm việc với các hướng dẫn phụ.os. listdir() lists all the files present in a directory. We can make use of os. walk() if we want to work with sub-directories as well.
Làm cách nào để sử dụng GLOB để tìm các tệp đệ quy?Chúng ta có thể sử dụng hàm glob.glob () hoặc glob.iglob () trực tiếp từ mô -đun GLOB để truy xuất các đường dẫn đệ quy từ bên trong các thư mục/tệp và thư mục con/phụ.Lưu ý: Khi đệ quy được đặt đúng, **, theo sau là bộ phân cách đường dẫn ('./**/') sẽ phù hợp với bất kỳ tệp hoặc thư mục nào.use the function glob. glob() or glob. iglob() directly from glob module to retrieve paths recursively from inside the directories/files and subdirectories/subfiles. Note: When recursive is set True “ ** ” followed by path separator ('./**/') will match any files or directories.
Làm cách nào để sử dụng .glob trong Python?Phương thức python glob () để tìm kiếm các tệp mà chúng ta cần nhập mô-đun toàn cầu tích hợp của Python để sử dụng hàm glob ().Python Glob.Phương thức glob () trả về danh sách các tệp hoặc thư mục phù hợp với đường dẫn được chỉ định trong đối số tên đường dẫn.Hàm này có hai đối số, cụ thể là tên đường dẫn và cờ đệ quy.import Python's built-in glob module to use the glob() function. Python glob. glob() method returns a list of files or folders that matches the path specified in the pathname argument. This function takes two arguments, namely pathname, and recursive flag. |