首页 > 解决方案 > 从 json 打印

问题描述

我正在尝试从 Json 文件中打印出标签。我的程序目前只打印最后一个 json 文件。

当我运行程序时,我试图在 json 文件中打印出名称。这就是我到目前为止所得到的

inventoryFileNames = ["REID_1F_20171004.json", "REID_2F_20171004.json", "REID_3F_20171004.json"]
itemNameToInventoryItem = {}

for inventoryFileName in inventoryFileNames: 
    inventoryFile = open( inventoryFileName, 'r' )
    inventoryData = json.loads( inventoryFile.read() )

while sortChoice != 'q':
    MachineSTock = input('Would you like the (m) machine report or the (i)inventory report?:')
    if MachineSTock == 'm':
        inventoryFile = open( inventoryFileName, 'r' )
        inventoryData = json.loads( inventoryFile.read() )
        print('Label              Pct Sold              Sales ' )    
        print (inventoryData['machine_label'], ":")         

我希望它打印出来:

Label              
REID_1F :
REID_2F :
REID_3F :

标签: pythonjson

解决方案


这个问题与json无关。如果你想遍历所有文件并从每个文件中打印一些东西,那么你的print语句需要在你的for循环中。

尝试这个。我已经删除了一些与您的问题无关的方面。

inventoryFileNames = ["REID_1F_20171004.json", "REID_2F_20171004.json", "REID_3F_20171004.json"]
itemNameToInventoryItem = {}

print('Label              Pct Sold              Sales ' )    

for inventoryFileName in inventoryFileNames: 
    inventoryFile = open( inventoryFileName, 'r' )
    inventoryData = json.loads( inventoryFile.read() )

    print (inventoryData['machine_label'], ":")

注意第一个print是如何在循环“外部”(高于和在同一缩进级别),for而第二个print现在是“内部”(缩进和低于)for循环?这意味着第一条print语句将执行一次以提供标题,而第二print条语句将针对inventoryFileNames.

如果你保持这个结构,你可以把你的input命令放回去。问问你自己——你想要input一次(如果是的话把它放在for循环之外)还是对每个项目inventoryFileNames(如果是的话把它放在for循环内)?


推荐阅读