【发布时间】:2012-12-01 09:46:06
【问题描述】:
这个问题搭载了我昨天发布的question。实际上,我的代码可以正常工作。我从小处着手。我为 Python 代码的多个 JSON 文件 outside 切换了 JSON in Python 代码。我实际上让它工作得很好。然后发生了某种灾难,我的代码丢失了。
我花了几个小时试图重新创建它,但无济于事。我实际上正在使用 arcpy(ArcGIS 的 Python 模块),因为稍后我将使用它来执行一些空间分析,但我认为您不需要了解太多关于 arcpy 的知识来帮助我完成这部分(我不认为,但它可能会有所帮助)。
这是我最近尝试的一个版本,但它不起作用。我将我的实际路径切换为“路径名”。实际上,当我尝试填充 CSV 中的行(具有纬度和经度值。它 成功写入纬度/经度时,我实际上已经完成了所有工作直到 CSV 文件中的标题)。所以显然dict_writer.writerows(openJSONfile) 下面的任何东西都不起作用:
import json, csv, arcpy
from arcpy import env
arcpy.env.workspace = r"C:\GIS\1GIS_DATA\Pathname"
workspaces = arcpy.ListWorkspaces("*", "Folder")
for workspace in workspaces:
arcpy.env.workspace = workspace
JSONfiles = arcpy.ListFiles("*.json")
for JSONfile in JSONfiles:
descJSONfile = arcpy.Describe(JSONfile)
JSONfileName = descJSONfile.baseName
openJSONfile = open(JSONfile, "wb+")
print "JSON file is open"
fieldnames = ['longitude', 'latitude']
with open(JSONfileName+"test.csv", "wb+") as f:
dict_writer = csv.DictWriter(f, fieldnames=fieldnames)
dict_writer.writerow(dict(zip(fieldnames, fieldnames)))
dict_writer.writerows(openJSONfile)
#Do I have to open the CSV files? Aren't they already open?
#openCSVfile = open(CSVfile, "r+")
for row in openJSONfile:
f.writerow( [row['longitude'], row['latitude']] )
非常感谢任何帮助!
【问题讨论】:
-
什么实际上不起作用?也就是说,它会崩溃吗?您是否期望它执行 X 但实际上它执行 Y?它什么都不做?
-
使用
dict_writer的writeheader()方法写入标题,然后使用其writerow()写入行。每行都必须是映射其值的字段名字典。 -
@katrielalex 我上面解释的最后一行说明了什么不起作用:虽然代码成功填充了 CSV 文件中的标题,但它没有填充 JSON 文件中的实际值进入 CSV 的行(在标题下方)。所以我得到的 CSV 看起来像这样:纬度、经度(但下面没有值)。
-
@martineau 您介意为我重写并粘贴该代码块,以便我明白您的意思吗?我是新手,所以我不确定将您建议的代码放在哪里。
标签: python json csv arcgis arcpy