Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何按用户选择导入的python文件';s命令行参数_Python_Python 3.x_Command Line Arguments_Argv - Fatal编程技术网

如何按用户选择导入的python文件';s命令行参数

如何按用户选择导入的python文件';s命令行参数,python,python-3.x,command-line-arguments,argv,Python,Python 3.x,Command Line Arguments,Argv,在一个主python文件中,我导入了另一个python文件,比如它们的名称是file1、file2、file3,所有这些文件中都有一个名为scrape()的函数。我试图根据用户输入选择哪个文件的scrape()将运行,如下所示: python main.py file1 以下是我的代码的相关部分: import file1 import file2 import file3 fileName = sys.argv[1] for func in ['%s.scrape' % fileName

在一个主python文件中,我导入了另一个python文件,比如它们的名称是file1、file2、file3,所有这些文件中都有一个名为
scrape()
的函数。我试图根据用户输入选择哪个文件的
scrape()
将运行,如下所示:

python main.py file1
以下是我的代码的相关部分:

import file1
import file2
import file3

fileName = sys.argv[1]

for func in ['%s.scrape' % fileName]:
    meta, infos = func()
但是,我收到以下错误消息:

Traceback (most recent call last):
File "main.py", line 50, in <module>
meta, infos = func()
TypeError: 'str' object is not callable
回溯(最近一次呼叫最后一次):
文件“main.py”,第50行,在
meta,infos=func()
TypeError:“str”对象不可调用

请注意,当我在[file1.scrap]中为func使用
时,它可以工作:
我只是不能使用用户输入作为导入的文件名。有人能告诉我怎么做吗?

您正试图将
func
作为函数调用,而实际上它是从命令行参数生成的字符串

出于您的目的,正如prashant的链接帖子中提到的,您可能希望使用类似模块的东西

这里有一个简单的例子

导入系统 进口小商品 #`imp.load_source`需要模块的完整路径 #这将加载作为“用户选择”提供的模块` #然后可以“导入用户选择”,或者使用“mod”直接访问包内部 mod=imp.load\u source(“用户选择“,”//site packages/pytz/\uuuuu init\uuuuuu.py”) #我使用的是'user_selection'和'mod'而不是'pytz'` 导入用户选择 打印(用户选择。所有时区) 打印(mod.all_时区) 在您的情况下,可能需要使用从名称获取完整路径,或者直接在命令行中提供完整路径

这应该是一个起点

导入系统 进口小商品 文件名=sys.argv[1] f、 文件名,desc=imp.find_模块(文件名:['/path/where/modules/live']) mod=imp.load_模块(“选定的_模块”,f,文件名,描述) mod.scrape()
您试图将
func
作为函数调用,而实际上它是从命令行参数生成的字符串

出于您的目的,正如prashant的链接帖子中提到的,您可能希望使用类似模块的东西

这里有一个简单的例子

导入系统 进口小商品 #`imp.load_source`需要模块的完整路径 #这将加载作为“用户选择”提供的模块` #然后可以“导入用户选择”,或者使用“mod”直接访问包内部 mod=imp.load\u source(“用户选择“,”//site packages/pytz/\uuuuu init\uuuuuu.py”) #我使用的是'user_selection'和'mod'而不是'pytz'` 导入用户选择 打印(用户选择。所有时区) 打印(mod.all_时区) 在您的情况下,可能需要使用从名称获取完整路径,或者直接在命令行中提供完整路径

这应该是一个起点

导入系统 进口小商品 文件名=sys.argv[1] f、 文件名,desc=imp.find_模块(文件名:['/path/where/modules/live']) mod=imp.load_模块(“选定的_模块”,f,文件名,描述) mod.scrape()