这个问题与我昨天发布的一个问题背道而驰。实际上我的代码可以正常工作。我是从小开始的。我将Python代码中的JSON切换到Python代码的多个JSON文件外部。我真的把它弄得很漂亮。然后发生了某种灾难,我的代码丢失了。在
我花了几个小时试图重建它,但没有成功。实际上,我使用的是arcpy(ArcGIS的Python模块),因为稍后我将使用它来执行一些空间分析,但是我认为您不需要了解太多arcpy来帮助我完成这一部分(我不认为,但它可能会有所帮助)。在
这是我最近一次尝试的一个版本,但它不起作用。我把我的实际路径改成了“Pathname”,实际上所有的东西都在工作,直到我试图填充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']] )
非常感谢任何帮助!!在
您应该使用
csv.DictWriter
对象来完成所有操作。这里有一个类似于你的代码的东西,因为我没有它,当我测试它时,它起作用了:没有必要写出每一行,因为json文件是行字典的列表(假设它是嵌入到链接问题中的内容)。在
我不能肯定我知道哪里出了问题,但是把所有的.JSON文件放在我的代码所在的同一个文件夹中(并适当地更改我的代码)是可行的。我将继续调查为什么在试图读取其他文件夹时,它会给我错误:
目前,以下代码确实有效:)
^{pr2}$谢谢大家的帮助。在
您实际上没有加载JSON文件。
您尝试从打开的文件中写入行,而不是从json写入行。在
您需要添加如下内容:
以及以后:
^{pr2}$最后两行应该被删除,因为所有的csv写入都是在到达它们之前完成的,而且它们在循环之外,所以它们只对最后一个文件起作用(它们不写任何东西,因为此时文件中没有行了)。在
另外,我看到您正在使用
with open...
打开csv文件,而不是json文件。您应该始终使用它,而不是使用没有
with
语句的open()
。在相关问题 更多 >
编程相关推荐