我在python文件名app.py中使用以下代码块读取JSON数据:
import json
with open('./mapping/canada_provinces.geojson', 'r') as f:
countryGeoJSONData = json.load(f)
这段代码的作用似乎是,同一目录中的任何其他文件都无法导入变量countryGeoJsonData,例如,在另一个文件中使用以下导入代码:
from app import countryGeoJSONData
尝试上述操作时,我收到一条错误消息,即无法从app.py导入名称countryGeoJSONData。 为什么会这样?with块是否正在创建某种本地上下文?该变量可在同一文件中的with块之外使用。为什么不能导入到另一个文件中
为了帮助再现这种情况,下面是app.py的内容:
import pandas as pd
import json
# Read in Report Data
indicators = pd.read_excel(".\data\In Depth_All Data Export Report.xlsx",3)
contextual = pd.read_excel(".\data\In Depth_All Data Export Report.xlsx",4)
#open the GeoJSON file to show canadian provinces on the map
with open('./mapping/canada_provinces.geojson', 'r') as f:
countryGeoJSONData = json.load(f)
#unique available indicators
availableIndicators = indicators["Indicator"].unique()
#unqiue provinces
provinces = indicators[indicators["Reporting level"]=="Province"]["Province/territory"].unique()
然后在layout.py中,我有以下导入代码:
from app import indicators, contextual, availableIndicators, provinces, countryGeoJSONData
这将导致以下错误:
ImportError: cannot import name 'countryGeoJSONData' from 'app'
但是,如果在with块后插入以下代码:
importableJSON= countryGeoJSONData
然后,新变量可以毫无问题地导入layout.py。这就是为什么我认为呆在一个有障碍的地方会引起问题
Project folder structure:
project
-data (includes data files)
-mapping (includes geojson file)
app.py
layout.py
明白了
with
语句与此无关,但您的相对文件名可能与此有关如果您测试了该模块,并将其导入到数据文件夹(“mapping/”)所在的同一文件夹中,则该模块将正常工作。 如果尝试从任何其他文件夹导入此模块,将失败
解决方法是使用模块的
__file__
特殊变量来查找数据文件的绝对路径pathlib.Path
允许使用最小的模糊:(路径对象覆盖“/”分隔符,因此路径可以与字符串复合-这不是打字错误)
相关问题 更多 >
编程相关推荐