在Python中包含外部文件

在Python中包含外部文件,python,import,python-module,Python,Import,Python Module,我正在编写一个Python脚本,它运行一些模拟,但是它需要很多输入参数,大约20个。所以我想把所有的模拟参数都包含在一个外部文件中。最简单的方法是什么 我在Stack Overflow问题中找到了一个答案,将所有模拟参数放在parm.py文件中,并使用imp包导入该模块 这将允许运行此脚本的用户提供任何文件作为输入。如果以这种方式导入模块: parm = imp.load_source('parm', '/path/to/parm.py') 然后,所有参数都必须引用为 parm.p1, par

我正在编写一个Python脚本,它运行一些模拟,但是它需要很多输入参数,大约20个。所以我想把所有的模拟参数都包含在一个外部文件中。最简单的方法是什么

我在Stack Overflow问题中找到了一个答案,将所有模拟参数放在parm.py文件中,并使用imp包导入该模块

这将允许运行此脚本的用户提供任何文件作为输入。如果以这种方式导入模块:

parm = imp.load_source('parm', '/path/to/parm.py')
然后,所有参数都必须引用为

parm.p1, parm.p2

然而,我只想在我的脚本中将它们称为p1、p2等。有没有办法做到这一点?

你可以使用这个方法,但是你应该完全考虑另一种方法。

你可以使用这个方法,但是你应该完全考虑另一种方法。

从外部文件导入任意代码是个坏主意。 请将您的参数放入配置文件中,并使用Python的模块将其读入

例如:

==> multipliers.ini <==
[parameters]
p1=3
p2=4

==> multipliers.py <==
#!/usr/bin/env python

import ConfigParser

config = ConfigParser.SafeConfigParser()
config.read('multipliers.ini')


p1 = config.getint('parameters', 'p1')
p2 = config.getint('parameters', 'p2')

print p1 * p2

从外部文件导入任意代码是个坏主意

请将您的参数放入配置文件中,并使用Python的模块将其读入

例如:

==> multipliers.ini <==
[parameters]
p1=3
p2=4

==> multipliers.py <==
#!/usr/bin/env python

import ConfigParser

config = ConfigParser.SafeConfigParser()
config.read('multipliers.ini')


p1 = config.getint('parameters', 'p1')
p2 = config.getint('parameters', 'p2')

print p1 * p2

您正在寻找类似import*的内容-这不是推荐的做法。请参阅中的答案。解决方案:不要。你不应该从。。。import*通常都会导入,因为这会使跟踪代码变得更加困难。我希望用户为模拟提供一个参数列表,对于他没有提供的任何参数,都将使用默认值。所以我想运行我的代码,为参数分配所有默认值,然后执行一个execfile'parm.py',它将覆盖用户提供的所有变量。有没有更优雅的方法可以做到这一点?您正在寻找类似import*的东西-这不是推荐的做法。请参阅中的答案。解决方案:不要。你不应该从。。。import*通常都会导入,因为这会使跟踪代码变得更加困难。我希望用户为模拟提供一个参数列表,对于他没有提供的任何参数,都将使用默认值。所以我想运行我的代码,为参数分配所有默认值,然后执行一个execfile'parm.py',它将覆盖用户提供的所有变量。有没有更优雅的方法呢?有没有简单的方法呢?有一段时间,我想把它们作为参数在命令行上传递,但是它们太多了。有什么简单的方法可以做到这一点吗?有一段时间我一直在考虑将它们作为参数在命令行上传递,但是它们太多了。