下面的代码创建了一个CSV文件,其中包含我想要的标题。
import os
import csv
tempCSV = "03_26_09_41_21.BirdNET.results.csv"
master_csv_path = os.path.join(r"C:\Users\owner\Documents\GitHub\SDP\master_CSVs", tempCSV[:5] + ".csv")
if not os.path.exists(master_csv_path):
f = open(master_csv_path, 'w', newline='')
out = csv.writer(f)
out.writerow(["Species", "Occurances", "Max Confidence", "Max Confidence Time", "Average Confidence"])
f.close()
但是,当我向它添加代码时,上面显示的代码片段中的CSV文件仍然被创建,但是是空的。我不需要确认所有添加的代码都是正确的,但是我不明白为什么它会影响上面显示的if语句中的CSV的创建。在我看来,我添加的所有代码都不应该影响if块,因此不应该影响CSV的正确创建。有什么想法吗
import os
import csv
import pandas as pd
tempCSV = "03_26_09_41_21.BirdNET.results.csv"
master_csv_path = os.path.join(r"C:\Users\owner\Documents\GitHub\SDP\master_CSVs", tempCSV[:5] + ".csv")
temp_csv_path = os.path.join(r"C:\Users\owner\Documents\GitHub\SDP\BirdNET_CSVs", tempCSV)
if not os.path.exists(master_csv_path):
f = open(master_csv_path, 'w', newline='')
out = csv.writer(f)
out.writerow(["Species", "Occurances", "Max Confidence", "Max Confidence Time", "Average Confidence"])
f.close()
with open(master_csv_path, 'w', newline='') as masterCSV, open(temp_csv_path, "r") as tempCSV:
writer = csv.writer(masterCSV)
try:
data = pd.read_csv(master_csv_path)
data.loc[masterCSV[3].at["Occurances"]] = int(data.loc[masterCSV[3].at["Occurances"]]) + 1
if masterCSV[4] > float(data.loc[masterCSV[3].at["Max Confidence"]]):
data.loc[masterCSV[3].at["Max Confidence"]] = masterCSV[4]
data.loc[masterCSV[3].at["Max Confidence Time"]] = hour + ':' + minute
data.loc[masterCSV[3].at["Average Confidence"]] = (int(data.loc[masterCSV[3].at["Average Confidence"]]) * (int(data.loc[masterCSV[3].at["Occurances"]]) - 1) + masterCSV[4]) / int(data.loc[masterCSV[3].at["Occurances"]])
except (KeyError, IndexError) as error:
writer.writerow([tempCSV[3], 1, tempCSV[4], hour + ':' + minute, tempCSV[4]])
1条答案
按热度按时间sqxo8psd1#
感谢@MarkTolonen的建议,我修复了这个问题。我去掉了两次打开同一个文件的部分。更新了下面的代码。