我对编程非常陌生,所以这将是粗糙的哈哈,但是,我是一名乌龟科学家,所以你的耐心和优秀的建议将有助于龟保护^ _ ^
所以,我有一个.csv与A列中的几种海龟物种之一,以及B列(Northings)和C(Eastings)中的UTM坐标。我需要为某些物种获取行(例如,列A为SPTU [spotted turtle fyi]的每一行)然后将所有这些行保存在预先存在的.csv中,覆盖所有旧坐标。这是我到目前为止所使用的,我正在使用PyCharm和Python 3.somethin:
对于glob.glob中的wsurvey-20150630.csv(“c:/ Users / Vito / Desktop / GIS / Latitude and Longitudes / wsurvey / wsurvey-20150630.csv”):
(f_path, f_name) = os.path.split(wsurvey-20150630.csv)
(f_short_name, f_extension) = os.path.splitext(f_name)
ws = wb.add_sheet(f_short_name)
spamReader = csv.reader(open(wsurvey-20150630.csv, 'rb'))
for row in "wsurvey-20150630latlon.csv":
if "SPTU" in row:
for rowx, row in enumerate(spamReader):
for colx, value in enumerate(row):
ws.write(rowx, colx, value)
wb.save(“c:/ Users / Vito / Desktop / GIS / UTM Coordinates / SPTU UTM Coordinates.csv”)
所以这基本上只是一堆代码,我从教程和诸如此类的东西中复制粘贴并尝试制作工作,呃它不起作用,可能是可怕的,可怕的错误。请想想那些可怜的,微小的,无助的乌龟。
然后,QGIS地图将读取更新的.csv中的坐标。我们的想法是每天使用新的乌龟坐标自动更新地图一次;乌龟坐标周围的湿地将受到保护。我们与六个物种合作,其中五个处于危险之中,其中一个物种濒临灭绝,一个物种受到威胁。帮助我们拯救海龟!
答案 0 :(得分:1)
没有冒犯,但你的代码是疯狂混乱的XD。对于这些类型的操作,Python非常容易编程。
如果您想打开一个文件进行阅读和另一个文件或写作,我建议使用此文件(这仅适用于CSV或其他文本文件。不是MICROSOFT EXCEL。)
请记住,这会覆盖该文件。
import csv
open("writefile.csv", "w").close() #Deletes everything in the file. Backspace this if you don't want the file contents deleted.
with open("readfile.csv", "r") as r, open("writefile.csv", "a") as w:
reader = csv.reader(r, lineterminator = "\n")
writer = csv.writer(w, lineterminator = "\n")
for row in reader:
if "SPTU" in row: #"SPTU" Has to be the entire value of the column. Please comment if you want to see if one of the columns CONTAINS "SPTU
w.writerow(row)
对于excel,最好先在计算机上安装特定的python模块。请找到你的Python文件夹(例如,我有Python34,因为我使用的是Python 3.4)。现在,将构建路径复制到此文件夹并打开命令提示符。 (如果你知道所有这些东西,请跳过,我只想打字)。输入cd
(包括空格),然后输入right-click + paste
路径。现在,输入cd Scripts
。最后,做pip install openpyxl
。
现在,使用此代码为每个csv创建一个excel。 (基于https://openpyxl.readthedocs.org/en/latest/的示例代码)
from openpyxl import Workbook
def writeToExcel(rows, filename):
wb = Workbook()
ws = wb.active
for row in rows:
ws.append(row)
ws.save(filename)
import csv
rows = []
with open("readfile.csv", "r") as r:
reader = csv.reader(r, lineterminator = "\n")
for row in reader:
if "SPTU" in row: #"SPTU" Has to be the entire value of the column. Please comment if you want to see if one of the columns CONTAINS "SPTU
rows.append(row)
writeToExcel(rows, "insert_name_of_file_here.xlsx")