Hướng dẫn convert string to module name python - chuyển đổi chuỗi thành tên mô-đun python

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

9

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi muốn biết cách chuyển đổi một đầu vào chuỗi thành một tên biến để sử dụng thành mã Python. Một ví dụ cụ thể:

def insrospect(foo, bar):
    requested_module = makestringvariable(foo)
    requested_object = makestringvariable(bar)
    import requested_module
    for item in inspect.getmemebers(requested_module.requested_object):
        member = makestringvariable(item[0])
        if callable(requested_object.member):
           print item

if __name__ == '__main__':
    introspect(somemodule, someobject)

Vì vậy, ở đây, vì tôi không biết mô -đun nào để hướng nội trước khi khởi chạy, tôi cần chuyển đổi chuỗi thành tên mô -đun có thể sử dụng và vì getmembers() trả về các thành viên làm chuỗi, tôi cũng cần chúng được chuyển đổi thành tên biến có thể sử dụng để kiểm tra xem có kiểm tra Họ có thể gọi được.

Có chức năng makestringvariable() như vậy không?

Khi được hỏi ngày 25 tháng 5 năm 2011 lúc 10:14May 25, 2011 at 10:14

Hướng dẫn convert string to module name python - chuyển đổi chuỗi thành tên mô-đun python

Neydroydrecneydroydrecneydroydrec

6.6639 Huy hiệu vàng49 Huy hiệu bạc87 Huy hiệu Đồng9 gold badges49 silver badges87 bronze badges

5

Với chức năng __Import__ và phép thuật GetAttr, bạn sẽ có thể viết trực tiếp điều này:

import importlib
def introspect(foo, bar):
    imported_module = importlib.import_module(foo)
    imported_object = getattr(imported_module, bar)
    for item in inspect.getmembers(imported_object):
        if callable(getattr(imported_object, item[0]):
           print item

if __name__ == '__main__':
    introspect(somemodule, someobject)

Hướng dẫn convert string to module name python - chuyển đổi chuỗi thành tên mô-đun python

Neydroydrec

6.6639 Huy hiệu vàng49 Huy hiệu bạc87 Huy hiệu Đồng9 gold badges49 silver badges87 bronze badges

Với chức năng __Import__ và phép thuật GetAttr, bạn sẽ có thể viết trực tiếp điều này:May 25, 2011 at 10:20

Hướng dẫn convert string to module name python - chuyển đổi chuỗi thành tên mô-đun python

NeydroydrecCédric Julien

Đã trả lời ngày 25 tháng 5 năm 2011 lúc 10:2015 gold badges121 silver badges128 bronze badges

5

Cédric Juliencédric Julien

data = {
    foo: foo_value,
    bar: bar_value
}

76.3K15 Huy hiệu vàng121 Huy hiệu bạc128 Huy hiệu đồng

Bạn không thể chuyển đổi một chuỗi thành một biến như vậy, bởi vì các biến là một phần của mã của bạn chứ không phải dữ liệu của bạn. Thông thường, nếu bạn có nhu cầu "biến biến", như vậy, bạn sẽ sử dụng một dict:May 25, 2011 at 10:21

Và sau đó sử dụng data[foo] thay vì cố gắng sử dụng foo như một biến. Tuy nhiên, trong ví dụ này, bạn thực sự hỏi về việc nhập mô -đun thông qua một chuỗi và về việc nhận các thuộc tính bằng tên chuỗi, cả hai đều là dịch vụ mà Python cung cấp: thông qua các hàm __import__

def insrospect(foo, bar):
    requested_module = makestringvariable(foo)
    requested_object = makestringvariable(bar)
    import requested_module
    for item in inspect.getmemebers(requested_module.requested_object):
        member = makestringvariable(item[0])
        if callable(requested_object.member):
           print item

if __name__ == '__main__':
    introspect(somemodule, someobject)
0.Thomas Wouters

Đã trả lời ngày 25 tháng 5 năm 2011 lúc 10:2123 gold badges146 silver badges122 bronze badges

1

Thomas Woutersthomas Wouters

127K23 Huy hiệu vàng146 Huy hiệu bạc122 Huy hiệu Đồng

module = sys.modules[modulename]
member = getattr(module, membername)

Các thành viên của một mô -đun chỉ là các thuộc tính trên mô -đun đó, vì vậy bạn có thể sử dụng

def insrospect(foo, bar):
    requested_module = makestringvariable(foo)
    requested_object = makestringvariable(bar)
    import requested_module
    for item in inspect.getmemebers(requested_module.requested_object):
        member = makestringvariable(item[0])
        if callable(requested_object.member):
           print item

if __name__ == '__main__':
    introspect(somemodule, someobject)
0 trên đối tượng mô -đun để truy xuất chúng.May 25, 2011 at 10:22

Bản thân các đối tượng mô -đun được lưu trữ trong từ điển

def insrospect(foo, bar):
    requested_module = makestringvariable(foo)
    requested_object = makestringvariable(bar)
    import requested_module
    for item in inspect.getmemebers(requested_module.requested_object):
        member = makestringvariable(item[0])
        if callable(requested_object.member):
           print item

if __name__ == '__main__':
    introspect(somemodule, someobject)
2:Martijn Pieters

Đã trả lời ngày 25 tháng 5 năm 2011 lúc 10:22276 gold badges3898 silver badges3249 bronze badges

2

Làm cách nào để chuyển đổi một chuỗi thành một tên trong Python?

Chuỗi vào tên biến trong python bằng hàm vars ().Thay vì sử dụng hàm locals () và toàn cầu () để chuyển đổi một chuỗi thành một tên biến trong python, chúng ta cũng có thể sử dụng hàm vars ().Hàm Vars (), khi được thực thi trong phạm vi toàn cầu, hoạt động giống như hàm Globals ().Using the vars() Function. Instead of using the locals() and the globals() function to convert a string to a variable name in python, we can also use the vars() function. The vars() function, when executed in the global scope, behaves just like the globals() function.

Làm cách nào để chuyển đổi một chuỗi thành một đối tượng trong Python?

Sử dụng hàm json.loads ().JSON.Hàm tải () chấp nhận làm đầu vào một chuỗi hợp lệ và chuyển đổi nó thành từ điển Python.Quá trình này được gọi là Deserialization - hành động chuyển đổi một chuỗi thành một đối tượng. loads() function. The json. loads() function accepts as input a valid string and converts it to a Python dictionary. This process is called deserialization – the act of converting a string to an object.

Làm thế nào để bạn đặt tên cho một mô -đun trong Python?

Mô -đun Python tên __name__ là một biến chứa tên của mô -đun được tham chiếu.Mô -đun hiện tại, mô -đun được thực thi (cũng được gọi là mô -đun chính) có tên đặc biệt: '__main__'.Với tên này, nó có thể được tham chiếu từ mã Python.The __name__ is a variable that holds the name of the module being referenced. The current module, the module being executed (called also the main module) has a special name: '__main__' . With this name it can be referenced from the Python code.

Làm thế nào để bạn chuyển đổi một chuỗi thành một biến?

Chúng ta có thể gán chuỗi ký tự cho tên biến bằng cách sử dụng hàm gán ().using assign() function.