Hướng dẫn python import file by string - tệp nhập python theo chuỗi

Có thể trùng lặp: Nhập mô -đun động trong Python
Dynamic module import in Python

Tôi dự định sẽ sớm tạo một bộ tệp vào một lúc nào đó và cách tốt nhất để tổ chức nó là có một danh sách, danh sách đó sẽ ở đầu một tập tin và sau khi nó sẽ có một số lượng mã vô lý để xử lý Danh sách đó kiểm soát những gì và cách nó hoạt động. Tôi đang tìm cách viết danh sách chỉ một lần và Danh sách nói là danh sách các tên thư mục và tệp trong định dạng này:

[[folder/filename, bool, bool, int], [folder/filename, bool, bool, int]]

Như bạn có thể thấy, folder/filename giống nhau [loại]. Tên tệp là tên thư mục với .py ở cuối, nhưng thực hiện nhập xxx bạn không cần phải nhập xxx.py, vì vậy tôi không thấy điều này gây ra sự cố.

Vấn đề tôi đang gặp phải là nhập khẩu bằng phương pháp này ...

for [testName, auto, hardware, bit] in testList:
    print[testName]
    paths = "\\" + testName
    print paths
    addpath[paths]
    sys.modules[testName] = testName # One of a few options I've seen suggested on the net
    print["Path Added"]
    test = testName + ".Helloworld[]"
    eval[test]

Vì vậy, đối với mỗi bài kiểm tra tôi có, in tên, lắp ráp một chuỗi chứa đường dẫn ["\\testName"], cho ví dụ này, in đường dẫn thử nghiệm, sau đó thêm đường dẫn vào danh sách [____10], sau đó in để xác nhận nó đã xảy ra, sau đó Lắp một chuỗi sẽ được thực hiện bởi

for [testName, auto, hardware, bit] in testList:
    print[testName]
    paths = "\\" + testName
    print paths
    addpath[paths]
    sys.modules[testName] = testName # One of a few options I've seen suggested on the net
    print["Path Added"]
    test = testName + ".Helloworld[]"
    eval[test]
1 cho các thử nghiệm mô -đun chính và cuối cùng là đánh giá nó.

Như bạn có thể thấy, hiện tại tôi phải có một danh sách nhập khẩu ở đầu. Tôi chỉ đơn giản là nhập

for [testName, auto, hardware, bit] in testList:
    print[testName]
    paths = "\\" + testName
    print paths
    addpath[paths]
    sys.modules[testName] = testName # One of a few options I've seen suggested on the net
    print["Path Added"]
    test = testName + ".Helloworld[]"
    eval[test]
2 [nội dung của
for [testName, auto, hardware, bit] in testList:
    print[testName]
    paths = "\\" + testName
    print paths
    addpath[paths]
    sys.modules[testName] = testName # One of a few options I've seen suggested on the net
    print["Path Added"]
    test = testName + ".Helloworld[]"
    eval[test]
2 là tên của mô -đun tôi muốn nhập], vì nó sẽ cố gắng tìm một mô -đun gọi là
for [testName, auto, hardware, bit] in testList:
    print[testName]
    paths = "\\" + testName
    print paths
    addpath[paths]
    sys.modules[testName] = testName # One of a few options I've seen suggested on the net
    print["Path Added"]
    test = testName + ".Helloworld[]"
    eval[test]
2, không phải là một mô -đun gọi là nội dung của
for [testName, auto, hardware, bit] in testList:
    print[testName]
    paths = "\\" + testName
    print paths
    addpath[paths]
    sys.modules[testName] = testName # One of a few options I've seen suggested on the net
    print["Path Added"]
    test = testName + ".Helloworld[]"
    eval[test]
2.

Tôi đã thấy một vài ví dụ về nơi này đã được thực hiện, nhưng không thể tìm thấy bất kỳ công việc nào trong hoàn cảnh của tôi. Nếu ai đó thực sự có thể ném một đoạn mã, điều đó thật tuyệt vời.

Tôi cũng yêu cầu tôi không bị treo, được rút ra, cũng không được sử dụng để sử dụng eval, nó được sử dụng trong một môi trường rất được kiểm soát [danh sách mà nó chu kỳ nằm trong tệp .py, vì vậy không có "người dùng cuối" nên lộn xộn với nó].

Quảng cáo

Quảng cáo

Được gửi bởi Nanodano trên Sun, 11/11/2018 - 18:52

Tổng quan

  • Giới thiệu
  • Sử dụng Nhập khẩu để nhập các mô -đun
  • Sự kết luận
  • Liên kết tham chiếu

Giới thiệu

Sử dụng Nhập khẩu để nhập các mô -đunimportlib! Note that this feature was introduced in Python 3.1 but there is a 2.7 version of importlib though less featured.

Sự kết luận

Liên kết tham chiếu

Sử dụng Nhập khẩu để nhập các mô -đun

Sự kết luậnimportlib provides a simple import_module function that accepts a string name with dot separators. It works just like a normal import except it uses a string to store the name. On import, the file is executed and the module object is returned. If you only need the code run on import it is not necessary to store the returned module.

import importlib

# Contrived example of generating a module named as a string
full_module_name = "mypackage." + "mymodule"

# The file gets executed upon import, as expected.
mymodule = importlib.import_module[full_module_name]

# Then you can use the module like normal
mymodule.func1[]
mymodule.func2[]

Sự kết luận

Liên kết tham chiếu

Liên kết tham chiếu

  • Trong Python, khi xây dựng một công cụ tạo mã hoặc khung, bạn có thể cần lập trình một chuỗi đại diện cho tên của một mô -đun bạn muốn nhập. Làm thế nào bạn sẽ nhập một mô -đun nếu bạn có tên như một chuỗi? Đây là cách làm điều đó với ImportLib! Lưu ý rằng tính năng này đã được giới thiệu trong Python 3.1 nhưng có phiên bản 2.7 của ImportLib mặc dù ít tính năng hơn.
  • Tìm hiểu thêm về cách Python tìm kiếm nhập khẩu, cách sử dụng biến môi trường 'pythonpath` và cách sử dụng `sys.path` trong nhập khẩu Python, sys.path và pythonpath của tôi.
  • Tìm hiểu thêm về các môi trường ảo Python cho phép bạn tạo môi trường Python bị cô lập với các đường dẫn nhập khác nhau với hướng dẫn môi trường ảo Python của tôi.
  • Nhập khẩu cung cấp chức năng Nhập khẩu_Module đơn giản chấp nhận tên chuỗi có dấu phân cách chấm. Nó hoạt động giống như một nhập khẩu bình thường ngoại trừ nó sử dụng một chuỗi để lưu trữ tên. Khi nhập, tệp được thực thi và đối tượng mô -đun được trả về. Nếu bạn chỉ cần mã chạy trên nhập, không cần thiết phải lưu trữ mô -đun được trả về.

Quảng cáo

Quảng cáo

Thông thường, các nhà phát triển nhập các mô -đun trong kịch bản Python bằng cách đề cập đến tên của họ theo nghĩa đen. Đôi khi bạn có thể cần nhập các mô -đun Python bằng các biến chuỗi chứa tên của chúng. Trong bài viết này, chúng tôi sẽ học cách nhập các mô -đun Python bằng tên chuỗi.

Nếu bạn đang sử dụng Python

Hãy để chúng tôi nói rằng bạn có danh sách các chuỗi sau đây trong đó mỗi chuỗi là một tên mô -đun, là chuỗi.

moduleNames = ['sys', 'os', 're', 'unittest'] 

Nếu bạn chỉ muốn nhập một mô -đun duy nhất bằng __Import__, bạn có thể làm như vậy bằng cách sử dụng chức năng __Import__ trực tiếp. Dưới đây là một ví dụ để chỉ nhập mô -đun Unittest.

__import__['unittest', globals=globals[]]

Dưới đây là lệnh để dễ dàng nhập tất cả các mô -đun được đề cập trong danh sách trên, sử dụng __Import__.

modules = map[__import__, moduleNames]

Ngoài ra, và cũng cho Python> 2.7, bạn có thể sử dụng mô -đun nhập khẩu để nhập các mô -đun bằng chuỗi tên của chúng. Dưới đây là một ví dụ để nhập mô -đun OS.Path.

module = importlib.import_module['os.path']

Trong bài viết này, chúng tôi đã học được cách nhập các mô -đun Python bằng chuỗi tên của chúng.

Cũng đọc:

Gọi chức năng Python theo tên StringHow để lưu tên người dùng git & mật khẩu cách nào để lấy tên phân loại trong pythonhow để khóa tệp trong pythonhow để sử dụng các biến boolean trong script shell
How to Save Git Username & Password
How to Get Classname of Instance in Python
How to Lock File in Python
How to Use Boolean Variables in Shell Script

Bài viết liên quan:

Làm cách nào để nhập tệp vào Python?

cách tốt nhất để nhập khẩu. Các tệp PY là bằng cách của __init__.py ...
Chỉ cần nhập tệp mà không có. Tiện ích mở rộng PY ..
Một thư mục có thể được đánh dấu là một gói, bằng cách thêm một tệp __init__.py trống ..
Bạn có thể sử dụng hàm __Import__, lấy tên mô -đun [không có phần mở rộng] làm tiện ích mở rộng chuỗi ..

__ 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.

Làm thế nào để bạn nhập một chuỗi vào Python?

Nói chung, để đọc nội dung tệp dưới dạng chuỗi, hãy làm theo các bước này ...
Mở tệp ở chế độ đọc.Gọi hàm mở [] hàm với đường dẫn tệp làm đối số.....
Phương thức gọi [] trên đối tượng tệp.Read [] Phương thức trả về toàn bộ nội dung của tệp dưới dạng chuỗi ..
Đóng tệp bằng cách gọi phương thức đóng [] trên đối tượng tệp ..

__ Trình tải __ trong Python là gì?

__loader__ là một thuộc tính được đặt trên mô -đun được nhập bởi trình tải của nó.Truy cập nó sẽ trả về chính đối tượng Trình tải.Trong các phiên bản Python trước 3.3, __loader__ không được thiết lập bởi bộ máy nhập khẩu tích hợp.Thay vào đó, thuộc tính này chỉ có sẵn trên các mô -đun được nhập bằng trình tải tùy chỉnh.an attribute that is set on an imported module by its loader. Accessing it should return the loader object itself. In Python versions before 3.3, __loader__ was not set by the built-in import machinery. Instead, this attribute was only available on modules that were imported using a custom loader.

Bài Viết Liên Quan

Chủ Đề