如何将另一个 python 脚本 (.py) 导入主 python 文件

How to import another python script (.py) into main python file

有没有办法将多个 python 文件导入到主 python 文件中?

我有一堆 py 文件,每个文件都必须 运行 在主 python 文件中,数据保存到 json 文件中。

这是我尝试过的方法,但它给了我一个错误。

import light.py as light 

错误:

Traceback (most recent call last):
File "<frozen importlib._bootstrap>", line 2218, in  _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/pi/Desktop/majorproject/pillar1.py", line 8, in <module>
import sensorkey.py as sensorkey
ImportError: No module named 'sensorkey.py'; 'sensorkey' is not a package

我也尝试过指定 py 文件的路径,但它也没有用,并且一直给出无效的语法错误。

import /home/pi/Desktop/json/light.py as light

更新: 我设法修复了导入错误,但我现在在导入这个 light.py 文件后,我必须将字典中的某些键(键)打印到这个新文件中,然后将其导出到 json 文件。我目前正在使用 TinyDB 来这样做。这是我的代码:

from tinydb import TinyDB, Query
import json
from light import key

with open("/home/pi/Desktop/json/sensortestest.json", 'w+'):
    db = TinyDB('/home/pi/Desktop/json/sensortestest.json')
    table = db.table('Light')
    db.insert_multiple([{'Key 1' :key[lightkey]}, {'Key 2' : key[lightkeyID]}])

错误:

Traceback (most recent call last):
  File "/home/pi/Desktop/majorproject/testertestest.py", line 12, in <module>
    db.insert_multiple([{'Key 1' :key[lightkey]}, {'Key 2' : key[lightkeyID]}])

NameError: 名称 'lightkey' 未定义

问题是我已经在它自己的文件中定义了 'lightkey'。

假设它在同一目录中,导入 your_filename.py 的语法是

import your_filename

在你的情况下,它将是

import light

请注意缺少 .py

如果您的文件位于不同的目录中,您需要执行以下操作:

import sys
sys.path.append('path/to/dir/containing/your_filename.py')
import your_filename

请注意,附加到 sys.path 是危险的,除非您知道自己在做什么,否则不应这样做。

official docs for import 阅读更多内容。

要包含字典,如果您的文件位置在不同的目录中,您可以这样做(注意 path.append 和 ):

import sys
sys.path.append("path/foo/bar/")
from light import *

如果它与当前目录在同一个目录下,你可以这样做:

from light import *