代码
import sys
import csv
class CaculateZG :def __init__(self,path1,path2):data1 = self.ReadFileData(path1)data2 = self.ReadFileData(path2)print("Read data ok")zg_d0 = self.Caculate(data1,data2)print("Caculate ok")self.WriteData(zg_d0)print("WriteData ok")def WriteData(self,data) :with open("output.csv", "w",newline="", encoding='utf-8-sig') as file:fieldnames = ["成员", "文件1 战功本周", "文件1 战功总量","文件1 势力值","文件2 战功本周", "文件2 战功总量","文件2 势力值","势力增量"]writer = csv.DictWriter(file, fieldnames=fieldnames,delimiter=",")writer.writeheader() writer.writerows(data)def Caculate(self,data1,data2) :zg_d0 = []for key in data2:if key in data1: zg_1 = float(data1[key][0])zg_2 = float(data2[key][0])delta_zg = zg_2 - zg_1if(delta_zg ==0) :ss = {"成员":key,"文件1 战功本周":data1[key][0],"文件1 战功总量":data1[key][1],"文件1 势力值":data1[key][2],"文件2 战功本周":data2[key][0],"文件2 战功总量":data2[key][1],"文件2 势力值":data2[key][2],"势力增量":float(data2[key][2]) - float(data1[key][2])}zg_d0.append(ss)return zg_d0def ReadFileData(self,path):with open(path, 'r', encoding='utf-8') as files:line = files.readline()sstr = line.split(", ")print(sstr)key_str = ["\ufeff成员","战功本周","战功总量","势力值"]key_index = []result = {}for data in key_str :index = sstr.index(data)key_index.append(index)print("key_index", key_index) line = files.readline()while line :sstr = line.split(", ")result[sstr[key_index[0]]] = [sstr[key_index[1]],sstr[key_index[2]],sstr[key_index[3]]]line = files.readline()return result
if __name__ == "__main__":path1 = "data1.csv"path2 = "data2.csv"if len(sys.argv) < 3 :print("未提供两个文件使用默认文件")else :path1 = sys.argv[1]path2 = sys.argv[2]CaculateZG(path1,path2)
Window 运行
python.exe .\zhangong_delta.py .\同盟统计2025年05月13日20时13分38秒.csv .\同盟统计2025年05月13日21时59分46秒.csv