Hướng dẫn python dynamically load modules in directory - python tự động tải các mô-đun trong thư mục
Ai đó có thể cung cấp cho tôi một cách tốt để nhập toàn bộ thư mục các mô -đun không? Tôi có một cấu trúc như thế này: Show
Tôi đã cố gắng chuyển đổi nó thành một gói bằng cách thêm 2 và thực hiện 3 nhưng nó không hoạt động theo cách tôi đã hy vọng.
Martineau Huy hiệu vàng 116K2525 gold badges160 silver badges285 bronze badges Đã hỏi ngày 29 tháng 6 năm 2009 lúc 9:38Jun 29, 2009 at 9:38
Evan Fosmarkevan FosmarkEvan Fosmark 96.3K34 Huy hiệu vàng104 Huy hiệu bạc117 Huy hiệu đồng34 gold badges104 silver badges117 bronze badges 4 Liệt kê tất cả các tệp Python ( 4) trong thư mục hiện tại và đặt chúng là biến 5 trong 2
Đã trả lời ngày 29 tháng 6 năm 2009 lúc 10:06Jun 29, 2009 at 10:06
Anurag uniyalanurag uniyalAnurag Uniyal 83.6K39 Huy hiệu vàng170 Huy hiệu bạc216 Huy hiệu đồng39 gold badges170 silver badges216 bronze badges 13 Cập nhật năm 2017: Bạn có thể muốn sử dụng 7 thay thế.Làm cho thư mục FOO thành một gói bằng cách thêm 2. Trong đó 2 Thêm:
Vì bạn muốn nó năng động (có thể hoặc không phải là một ý tưởng tốt), hãy liệt kê tất cả các py-files với danh sách dir và nhập chúng với một cái gì đó như thế này:
Sau đó, từ mã của bạn làm điều này:
Bây giờ bạn có thể truy cập các mô -đun với
vv 3 không phải là một ý tưởng tốt vì nhiều lý do, bao gồm cả các cuộc đụng độ tên và làm cho nó khó phân tích mã.
Đã trả lời ngày 29 tháng 6 năm 2009 lúc 11:10Jun 29, 2009 at 11:10
Lennart Regebrolennart RegebroLennart Regebro 162K41 Huy hiệu vàng221 Huy hiệu bạc251 Huy hiệu Đồng41 gold badges221 silver badges251 bronze badges 14 Python, bao gồm tất cả các tệp trong một thư mục:Đối với những người mới, những người không thể làm cho nó hoạt động, những người cần nắm tay.
Đã trả lời ngày 24 tháng 12 năm 2013 lúc 0:08Dec 24, 2013 at 0:08
Eric Leschinskieric LeschinskiEric Leschinski Phù vàng 140K92 Huy hiệu vàng406 Huy hiệu bạc328 Huy hiệu đồng92 gold badges406 silver badges328 bronze badges 3 Mở rộng trên câu trả lời của Mihail, tôi tin rằng cách không hackish (như trong, không xử lý trực tiếp các đường dẫn tệp) là như sau:
1Bạn sẽ nhận được: 2
Adrian Mouat 42.9K15 Huy hiệu vàng108 Huy hiệu bạc102 Huy hiệu đồng15 gold badges108 silver badges102 bronze badges Đã trả lời ngày 19 tháng 12 năm 2011 lúc 2:11Dec 19, 2011 at 2:11
Luca Invernizziluca InvernizziLuca Invernizzi 6.3393 huy hiệu vàng27 Huy hiệu bạc26 Huy hiệu đồng3 gold badges27 silver badges26 bronze badges 5 Bản thân tôi đã cảm thấy mệt mỏi với vấn đề này, vì vậy tôi đã viết một gói tên là Automodinit để sửa nó. Bạn có thể lấy nó từ http://pypi.python.org/pypi/automodinit/. Việc sử dụng là như thế này:
3Đó là nó! Từ bây giờ, nhập một mô -đun sẽ đặt __all__ thành danh sách các tệp .py [co] trong mô -đun và cũng sẽ nhập từng tệp đó như thể bạn đã gõ: 4Do đó, hiệu ứng của "từ nhập m *" khớp chính xác "nhập m". 0 rất vui khi chạy từ bên trong kho lưu trữ zip và do đó có khóa kéo an toàn.Niall
ZMO Huy hiệu vàng 24K453 Huy hiệu bạc86 Huy hiệu đồng4 gold badges53 silver badges86 bronze badges Đã trả lời ngày 5 tháng 3 năm 2012 lúc 2:24Mar 5, 2012 at 2:24
Niall Douglasniall DouglasNiall Douglas 8,9042 Huy hiệu vàng43 Huy hiệu bạc52 Huy hiệu đồng2 gold badges43 silver badges52 bronze badges 2 Tôi biết tôi đang cập nhật một bài viết khá cũ và tôi đã thử sử dụng 0, nhưng phát hiện ra quá trình thiết lập của nó bị hỏng đối với Python3. Vì vậy, dựa trên câu trả lời của Luca, tôi đã đưa ra một câu trả lời đơn giản hơn - có thể không hoạt động với .zip - với vấn đề này, vì vậy tôi đã hình dung tôi nên chia sẻ nó ở đây:Trong mô -đun 2 từ 5: 5và trong một gói khác dưới 5: 6Sau đó, bạn sẽ có tất cả các mô -đun được đặt trong gói được tải và nếu bạn viết một mô -đun mới, nó cũng sẽ được nhập tự động. Tất nhiên, sử dụng những thứ đó một cách cẩn thận, với sức mạnh lớn là trách nhiệm lớn.
PSL 2281 Huy hiệu bạc9 Huy hiệu đồng1 silver badge9 bronze badges Đã trả lời ngày 26 tháng 3 năm 2016 lúc 2:54Mar 26, 2016 at 2:54
Zmozmozmo Huy hiệu vàng 24K453 Huy hiệu bạc86 Huy hiệu đồng4 gold badges53 silver badges86 bronze badges 7Đã trả lời ngày 5 tháng 3 năm 2012 lúc 2:24Jun 7, 2016 at 16:15
Niall Douglasniall DouglasRicky Sahu 8,9042 Huy hiệu vàng43 Huy hiệu bạc52 Huy hiệu đồng4 gold badges40 silver badges32 bronze badges Tôi biết tôi đang cập nhật một bài viết khá cũ và tôi đã thử sử dụng 0, nhưng phát hiện ra quá trình thiết lập của nó bị hỏng đối với Python3. Vì vậy, dựa trên câu trả lời của Luca, tôi đã đưa ra một câu trả lời đơn giản hơn - có thể không hoạt động với .zip - với vấn đề này, vì vậy tôi đã hình dung tôi nên chia sẻ nó ở đây: 8Trong mô -đun 2 từ 5:và trong một gói khác dưới 5: 9Sau đó, bạn sẽ có tất cả các mô -đun được đặt trong gói được tải và nếu bạn viết một mô -đun mới, nó cũng sẽ được nhập tự động. Tất nhiên, sử dụng những thứ đó một cách cẩn thận, với sức mạnh lớn là trách nhiệm lớn. 0PSL 1
2281 Huy hiệu bạc9 Huy hiệu đồng Đã trả lời ngày 26 tháng 3 năm 2016 lúc 2:544 gold badges47 silver badges62 bronze badges ZmozmoJul 30, 2012 at 21:06
0 Đã trả lời ngày 7 tháng 6 năm 2016 lúc 16:15 2Ricky Sahuricky SahuJul 2, 2014 at 8:30
22.3k4 Huy hiệu vàng40 Huy hiệu bạc32 Huy hiệu đồngFarshid Ashouri Phù bằng vàng 14,9k649 Huy hiệu bạc64 Huy hiệu đồng6 gold badges49 silver badges64 bronze badges 1 Anurag uniyal Trả lời với những cải tiến được đề xuất! 3
Đã trả lời ngày 13 tháng 6 năm 2014 lúc 1:28Jun 13, 2014 at 1:28
Eduardo Lucioeduardo LucioEduardo Lucio 1.3251 Huy hiệu vàng19 Huy hiệu bạc34 Huy hiệu đồng1 gold badge19 silver badges34 bronze badges Sử dụng 7 Điều duy nhất bạn phải thêm là 4
Asclepius 52.7K16 Huy hiệu vàng154 Huy hiệu bạc135 Huy hiệu đồng16 gold badges154 silver badges135 bronze badges Đã trả lời ngày 26 tháng 11 năm 2019 lúc 15:56Nov 26, 2019 at 15:56
Tedtedted 12.4K7 Huy hiệu vàng58 Huy hiệu bạc100 Huy hiệu Đồng7 gold badges58 silver badges100 bronze badges 1
Tôi đã tạo một mô -đun cho điều đó, không dựa vào 2 (hoặc bất kỳ tệp phụ trợ nào khác) và khiến tôi chỉ nhập hai dòng sau: 5Hãy thoải mái sử dụng lại hoặc đóng góp: http://gitlab.com/aurelien-lourot/importdir Đã trả lời ngày 18 tháng 11 năm 2014 lúc 23:46Nov 18, 2014 at 23:46
AurelienaurelienAurelien 1.6621 Huy hiệu vàng18 Huy hiệu bạc29 Huy hiệu đồng1 gold badge18 silver badges29 bronze badges Ví dụ của Anurag với một vài sửa chữa: 6Đã trả lời ngày 19 tháng 11 năm 2014 lúc 11:13Nov 19, 2014 at 11:13
Kzarkzarkzar 2.8512 Huy hiệu vàng16 Huy hiệu bạc13 Huy hiệu đồng2 gold badges16 silver badges13 bronze badges Khi 5 không đủ tốt, đây là một cải tiến so với câu trả lời của TED. Cụ thể, việc sử dụng 5 là không cần thiết với phương pháp này. 7Lưu ý rằng 7 nhằm tránh tái lập mô -đun nếu nó đã được nhập, vì điều này có thể có nguy cơ nhập khẩu theo chu kỳ.Đã trả lời ngày 26 tháng 3 năm 2020 lúc 4:27Mar 26, 2020 at 4:27
AsclepiusasclepiusAsclepius 52.7K16 Huy hiệu vàng154 Huy hiệu bạc135 Huy hiệu đồng16 gold badges154 silver badges135 bronze badges Đã trả lời ngày 26 tháng 11 năm 2019 lúc 15:56
Đã trả lời ngày 18 tháng 11 năm 2014 lúc 23:46Jun 29, 2009 at 9:47
Aurelienaureliengimel 1.6621 Huy hiệu vàng18 Huy hiệu bạc29 Huy hiệu đồng10 gold badges74 silver badges104 bronze badges Ví dụ của Anurag với một vài sửa chữa: 8Đã trả lời ngày 19 tháng 11 năm 2014 lúc 11:13Jul 18, 2021 at 15:44
Kzarkzar 2.8512 Huy hiệu vàng16 Huy hiệu bạc13 Huy hiệu đồngFeb 8, 2011 at 12:51
Khi 5 không đủ tốt, đây là một cải tiến so với câu trả lời của TED. Cụ thể, việc sử dụng 5 là không cần thiết với phương pháp này. 9Lưu ý rằng 7 nhằm tránh tái lập mô -đun nếu nó đã được nhập, vì điều này có thể có nguy cơ nhập khẩu theo chu kỳ.Jan 18, 2018 at 11:07
Đã trả lời ngày 26 tháng 3 năm 2020 lúc 4:27Cheney Asclepiusasclepius8 silver badges22 bronze badges 2 Xem rằng 2 của bạn xác định 5. Các mô -đun - các gói tài liệu nói
Các tệp 2 được yêu cầu để biến Python coi các thư mục là chứa các gói; Điều này được thực hiện để ngăn các thư mục có tên chung, chẳng hạn như chuỗi, từ các mô -đun hợp lệ không chủ ý xảy ra sau đó trên đường dẫn tìm kiếm mô -đun. Trong trường hợp đơn giản nhất, 2 chỉ có thể là một tệp trống, nhưng nó cũng có thể thực thi mã khởi tạo cho gói hoặc đặt biến 5, được mô tả sau. 0... Giải pháp duy nhất là tác giả gói để cung cấp một chỉ mục rõ ràng của gói. Câu lệnh nhập sử dụng quy ước sau: Nếu gói mã ____ ____32 định nghĩa danh sách có tên 5, thì nó được coi là danh sách các tên mô -đun sẽ được nhập khi gặp từ nhập gói *. Tùy thuộc vào gói tác giả để giữ cho danh sách này được cập nhật khi một phiên bản mới của gói được phát hành. Các tác giả gói cũng có thể quyết định không hỗ trợ nó, nếu họ không thấy việc sử dụng để nhập * từ gói của họ. Ví dụ: tệp 5 có thể chứa mã sau:Jan 15, 2021 at 21:41
Điều này có nghĩa là 7 sẽ nhập ba mô hình con có tên của gói âm thanh. 1Đã trả lời ngày 29 tháng 6 năm 2009 lúc 9:47 GimelgimelSep 5 at 16:01
Tôi có thể tự động tải một mô -đun trong Python không?Sử dụng mô -đun IMP: Các mô -đun có thể được nhập động bằng mô -đun IMP trong Python. Ví dụ dưới đây là một minh chứng về việc sử dụng mô -đun IMP. Nó cung cấp phương thức find_module () để tìm mô -đun và phương thức Nhập khẩu_module () để nhập nó.Modules can be imported dynamically by the imp module in python. The example below is a demonstration on the using the imp module. It provides the find_module() method to find the module and the import_module() method to import it.
Làm cách nào để đọc tất cả các tệp trong một thư mục trong Python?Để có được danh sách tất cả các tệp và thư mục trong một thư mục cụ thể trong hệ thống tệp, hãy sử dụng os.listdir () trong các phiên bản cũ của python hoặc os.scandir () trong python 3.use os. listdir() in legacy versions of Python or os. scandir() in Python 3.
__ nhập __ làm gì trong Python?__Import __ () trong mô -đun Python giúp đưa mã có mặt trong một mô -đun khác bằng cách nhập hàm hoặc mã hoặc tệp bằng cách nhập phương thức Python.Nhập trong Python trả về đối tượng hoặc mô -đun mà chúng tôi đã chỉ định trong khi sử dụng mô -đun nhập.helps in getting the code present in another module by either importing the function or code or file using the import in python method. The import in python returns the object or module that we specified while using the import module.
Tại sao tôi cần __ init __ py?Các tệp __init__.py được yêu cầu để làm cho các thư mục xử lý Python chứa tệp dưới dạng các gói.Điều này ngăn các thư mục có tên chung, chẳng hạn như chuỗi, vô tình ẩn các mô -đun hợp lệ xảy ra sau đó trên đường dẫn tìm kiếm mô -đun.to make Python treat directories containing the file as packages. This prevents directories with a common name, such as string , unintentionally hiding valid modules that occur later on the module search path. |