我正在尝试读取一个public_data.json文件,但是每当我运行代码时,它都不会在文件中显示任何数据,我也不会收到任何错误消息?

时间:2019-08-20 21:15:00

标签: python-3.7

import json

#Load the data into a list.
filename = 'population_data.json'
with open(filename)as f:`enter code here`
    pop_data = json.load(f)

    enter code here

#Print the 2010 population data for each country.
for pop_dict in pop_data:`enter code here`
    if pop_dict['Year'] == '2010':
        country_name = pop_dict['Country Name']
        population = int(float(pop_dict['Value']))
        print(country_name + " : " + str(population))

我正试图从一个public_data.json文件中提取数据,但是每当我运行我的代码时,它都不会显示任何结果,并且没有收到任何错误,我已经将总体数据文件与代码,但我仍然有同样的问题,我在shell中没有得到任何数据结果。如果有人可以帮助我,我会很高兴。谢谢。

    enter code here
import json

#Load the data into a list.
filename = 'population_data.json'
with open(filename)as f:`enter code here`
    pop_data = json.load(f)

    enter code here

#Print the 2010 population data for each country.
for pop_dict in pop_data:`enter code here`
    if pop_dict['Year'] == '2010':
        country_name = pop_dict['Country Name']
        population = int(float(pop_dict['Value']))
        print(country_name + " : " + str(population))

1 个答案:

答案 0 :(得分:0)

我建议在python 调试器(pdb)中启动脚本。您可以通过以下方式启动脚本来启动它:

python3 -m pdb your_script.py

或通过导入pdb模块。将以下行添加到您的python文件中(例如,在import json之后,或其他任意行):

import pdb; pdb.set_trace()

一旦加载,调试器将在第一条指令处停止并显示调试器promt (Pdb)。依次输入next并按ENTER一行一行地执行,直到遇到有趣的一行为止。调试器始终打印 next 指令以及脚本路径和行。

调试器输出将添加到下面,之后的所有内容 (Pdb),您必须输入并使用ENTER

进行确认。
(Pdb) next
> /path/to/your_script.py(7)<module>()
-> pop_data = json.load(f)
(Pdb) next
> /path/to/your_script.py(11)<module>()
-> for pop_dict in pop_data:

现在让调试器打印变量的内容

(Pdb) p pop_data
{"Probably": "something", "you": "don't expect here"}

我怀疑for循环会产生0 pop_dict s,因此循环主体永远不会执行,或者没有pop_dictYear没有值2010和{{ 1}}正文永远不会执行。

替代以经常键入下一个(==单步执行):在特定行(if)上设置一个break点,并执行your_script.py:11直到断点被击中

continue

有关其他调试器命令,请参见pdb commands