繁体   English   中英

从用户输入或命令行参数导入Python

[英]Python import from user input or command line argument

我希望一个模块从另一个模块导入数据,但是我不想硬编码另一个模块的名称。 我尝试使用sys.argv ,如下所示:

from sys import argv
from argv[1] import database

但这给了我argv[1]invalid syntax 我也尝试过raw_input,如:

module = raw_input("Enter module name: ")
from module import database

这将导致ImportError: No module named module 我检查了这是否不是由于模块名称。 其他变量名称具有相同的结果。 变量数据库的名称将始终相同。 我已经通过从模块的名称导入成功导入了此变量,但是我希望此代码处理模块名称不同的情况,因为我可以使用多个模块,并且用户不必使用相同的名称每次的模块名称。 有没有办法做到这一点? 我看到的所有其他问题均未解决该特定问题,并且在Python的帮助模块中也未找到任何信息。

您可以使用字符串importlib.import_module导入给定的模块:

导入模块。 name参数以绝对或相对方式指定要导入的模块 (例如pkg.mod或..mod)。 如果使用相对术语指定名称,则必须将package参数设置为充当解析包名称的锚点的包的名称(例如import_module('.. mod','pkg.subpkg')将导入pkg.mod)。

(强调我的)

>>> from importlib import import_module
>>> module_name = 're'
>>> module = import_module(module_name)
>>> module
<module 're' from 'C:\\Users\\Christian\\AppData\\Local\\Programs\\Python\\Python36\\lib\\re.py'>
>>> 

另外,作为一项建议,如果计划从用户那里获取命令行参数,请使用专用的命令行参数解析库,而不要使用裸sys.argv 那里有好几个。 实际上,Python在标准库中有一个。 argparse

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM