Python 3.x 在函数中打开另一个.py文件以在Python3.5中传递图形

Python 3.x 在函数中打开另一个.py文件以在Python3.5中传递图形,python-3.x,sqlite,Python 3.x,Sqlite,我对Python非常陌生,我正在从事的项目的总体目标是建立一个SQLite DB,它将允许非程序员在将来轻松地进入(这是为一小群技术上都很有能力的人准备的)。我现在试图实现这一点的方法是让人们通过一个简单的文本编辑器将他们的新数据条目保存为.py文件,然后在将值输入DB的函数中打开该.py文件。到目前为止,我已经: def newEntry(material=None, param=None, value=None): if param == 'density':

我对Python非常陌生,我正在从事的项目的总体目标是建立一个SQLite DB,它将允许非程序员在将来轻松地进入(这是为一小群技术上都很有能力的人准备的)。我现在试图实现这一点的方法是让人们通过一个简单的文本编辑器将他们的新数据条目保存为.py文件,然后在将值输入DB的函数中打开该.py文件。到目前为止,我已经:

    def newEntry(material=None, param=None, value=None):
        if param == 'density':
            print('The density of %s is %s' % (material, value))

    import fileinput
    for line in fileinput.input(files=('testEntry.py'))
        process(line)
然后,我用一个简单的文本编辑器创建了一个名为testEntry.py的文件,当在终端中执行newEntry时,newEntry.py有望调用该文件。这里的想法是,一些用户只需在函数名中输入括号内输入的参数。testEntry.py只是:

    # Some description for future users
    newEntry(material='water', param='density', value='1')

当我在终端中运行newEntry.py时,什么都没有发生。是否有其他方法可以在另一个文件中打开和执行我不知道的.py文件?非常感谢您的帮助。

您的解决方案很有效,但正如一位评论员所说,它非常不安全,有更好的方法。假定您的
进程(…)
方法只是执行一些任意的Python代码,这可能被滥用来执行系统命令,例如删除文件(非常糟糕)

不要在每一行使用由一系列
newEntry(…)
组成的.py文件,而是让用户生成一个带有适当列标题的CSV文件。即

材料、参数、值
水,密度,1

然后解析此csv文件以添加新条目:

with open('entries.csv') as entries:
    csv_reader = csv.reader(entries)
    header = True
    for row in csv_reader:
        if header:  # Skip header
            header = False
            continue
        material = row[0]
        param = row[1]
        value = row[2]
        if param == 'density':
            print('The density of %s is %s' % (material, value))

您的用户可以使用Microsoft Excel、Google Sheets或任何其他可以导出.csv文件的电子表格软件来创建/编辑这些文件,您可以为用户提供一个带有预定义标题的模板。

有,但它可能非常不安全,更不用说,如果您指示“普通用户”编写代码,您将不得不处理大量的bug。我建议使用一些人性化的结构化格式,比如可以轻松解析和处理模块,或者甚至可以使用常规模块和内置模块。教用户数据格式比教语言更容易。我对我的问题进行了一些编辑,以反映这一点(希望它清楚),但用户所要做的就是将他们想要输入的数据放在函数newEntry()中。这是为一个小团体设计的,所有的用户都是技术上有能力的人。我提出了这个建议,并把它建成了,但是负责更大范围项目的人喜欢newEntry(…)这样做是因为参数的顺序没有那么重要,并且它们由它们对应的变量显式标记,因此错误分配值的可能性较小(他说)。