Python scandir so với toàn cầu

Mô-đun hệ điều hành trong Python cung cấp các chức năng để tương tác với hệ điều hành. Hệ điều hành đi kèm với các mô-đun tiện ích tiêu chuẩn của Python. Mô-đun này cung cấp một cách di động để sử dụng chức năng phụ thuộc vào hệ điều hành

hệ điều hành. phương thức scandir[] trong Python được sử dụng để lấy một trình vòng lặp của os. Các đối tượng DirEntry tương ứng với các mục trong thư mục được cung cấp bởi đường dẫn đã chỉ định.  

Bạn biết đấy, đôi khi tôi đọc những câu cách ngôn về trăn như "đẹp hơn xấu" tôi tự hỏi không biết các nhà sản xuất đang mỉa mai hay thật, và tôi không đùa

Nó không chỉ là về listdirscandir, rất nhiều thứ mơ hồ và bạn sẽ tìm thấy rất nhiều cách khác nhau để làm những điều tương tự, do đó góp phần tạo nên một hệ thống làm việc không theo tiêu chuẩn và lộn xộn. setuptools và distutils là những ví dụ rõ ràng, có rất nhiều thành phần setuptools vẫn sử dụng nội bộ các gói distutils cũ khiến nó trở nên đáng kinh ngạc. easy_install là một cách khác để thực hiện điệu nhảy đóng gói tương tự

Đôi khi, một chức năng trong Shutil bị hỏng và bạn cần nhập giải pháp thay thế từ các distutil cũ tốt, điều này thực sự vô lý và phi lý. Gần đây nhất, tôi tình cờ thấy điều này

from distutils.dir_util import copy_tree

cửa chớp. copy_tree bị hỏng [nó không tự động tạo các thư mục không tồn tại và có một số bất thường khác], vì vậy tôi phải sử dụng copy_tree từ distutils. mô-đun dir_util

Đây là một ví dụ tuyệt vời khác. distutils.core, pkg_resources và có một gói khác gọi là site về cơ bản tất cả đều làm một và giống nhau. Trong trường hợp này, tôi phải viết một phiên bản cục bộ của pip --freeze để kiểm tra thiết lập cục bộ của tôi. py và tạo ra các yêu cầu. txt từ đó thay vì các mô-đun được cài đặt trên toàn cầu. Như bạn có thể thấy, có lẽ có rất nhiều cách khó hiểu để thực hiện cùng một điều này

Được tạo vào 2015-11-10 11. 18 bởi xdegaye, thay đổi lần cuối 2022-04-11 14. 58 bởi quản trị viên. vấn đề giờ đã kết thúc

- [view]Tác giả. Xavier de Gaye [xdegaye] * #26032 "Use scandir[] to speed up pathlib globbing". - [xem]Tác giả. Guido van Rossum [gvanrossum] * issue22167].0 - [view]Tác giả. Guido van Rossum [gvanrossum] * issue22167].1 - [xem]Tác giả. Serhiy Storchaka [serhiy. storchaka] * issue22167].2 - [xem]Tác giả. Dima Tisnek [Dima. Tisnek] *Ngày. 2016-08-30 12. 18
In general the patch LGTM. It allows to speed up glob by 5-10% in warn test. But much more gain we can achieve by using os.scandir[]. Here are results of microbenchmarks:

$ ./python -m timeit -s "from glob import glob" -- "glob['**/*', recursive=True]"
Unpatched:        201 msec per loop
Using isdir[]:    181 msec per loop
Using scandir[]:  65.2 msec per loop

$ ./python -m timeit -s "from glob import glob" -- "glob['/usr/lib*/**/*', recursive=True]"
Unpatched:        2.06 sec per loop
Using isdir[]:    1.92 sec per loop
Using scandir[]:  820 msec per loop

$ ./python -m timeit -s "from glob import glob" -- "glob['/usr/lib*/**/', recursive=True]"
Unpatched:        1.77 sec per loop
Using isdir[]:    1.61 sec per loop
Using scandir[]:  431 msec per loop

Yet one benefit is that iglob[] now yields path names without the delay for reading the full content of a directory [see issue22167].
3 - [xem]Tác giả. Serhiy Storchaka [serhiy. storchaka] * issue22167].4 - [xem]Tác giả. Robot Roundup [python-dev] issue22167].6 - [xem]Tác giả. Robot Roundup [python-dev] issue22167].7 - [xem]Tác giả. Dima Tisnek [Dima. Tisnek] *Ngày. 2016-09-07 09. 09
In general the patch LGTM. It allows to speed up glob by 5-10% in warn test. But much more gain we can achieve by using os.scandir[]. Here are results of microbenchmarks:

$ ./python -m timeit -s "from glob import glob" -- "glob['**/*', recursive=True]"
Unpatched:        201 msec per loop
Using isdir[]:    181 msec per loop
Using scandir[]:  65.2 msec per loop

$ ./python -m timeit -s "from glob import glob" -- "glob['/usr/lib*/**/*', recursive=True]"
Unpatched:        2.06 sec per loop
Using isdir[]:    1.92 sec per loop
Using scandir[]:  820 msec per loop

$ ./python -m timeit -s "from glob import glob" -- "glob['/usr/lib*/**/', recursive=True]"
Unpatched:        1.77 sec per loop
Using isdir[]:    1.61 sec per loop
Using scandir[]:  431 msec per loop

Yet one benefit is that iglob[] now yields path names without the delay for reading the full content of a directory [see issue22167].
8 - [view]Tác giả. Serhiy Storchaka [serhiy. storchaka] *
Ngày. 2016-09-07 11. 10____3_______9

Chủ Đề