当我在下面添加代码时,pythoncsv.writerow()停止工作

nszi6y05  于 2023-04-03  发布在  Python
关注(0)|答案(1)|浏览(103)

下面的代码创建了一个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]])
sqxo8psd

sqxo8psd1#

感谢@MarkTolonen的建议,我修复了这个问题。我去掉了两次打开同一个文件的部分。更新了下面的代码。

...
if not os.path.exists(master_csv_path):
        with open(master_csv_path, 'w', newline='') as masterCSV:
            writer = csv.writer(masterCSV)
            writer.writerow(["Species", "Occurances", "Max Confidence", "Max Confidence Time", "Average Confidence"])
        
 with open(temp_csv_path, "r") as tempCSV:
     ...

相关问题