请问我整理的python脚本代码,执行出现资料交叉读取的问题,可否请协助指导一下应该要怎麼修改呢?

请问我整理的python脚本代码,执行出现资料交叉读取的问题,可否请协助指导一下应该要怎麼修改呢?

    for file_name in os.listdir(folder_path):
        if not file_name.lower().endswith('.csv') or file_name == "示范.csv":
            continue
        csv_path = os.path.join(folder_path, file_name)
        try:
            x, y, elevation = read_coordinates_from_csv(csv_path)
            borehole = self.g_i.borehole(x, y)
            borehole.Head.set(elevation)
            self.g_i.soillayer(0)
            self.g_i.Soillayers[0].Zones[0].Top.set(10)
            self.read_and_assign_soillayers(csv_path, 示范Data)
        except Exception as e:
            print(f"❌ 跳过 {file_name}:{e}")

    easygui.msgbox(msg='✅ 所有作业已自动建立完成。', title='完成')

def read_and_assign_soillayers(self, csv_path, 示范Data):
    with open(csv_path, 'r', encoding='utf-8-sig') as csv_file:
        csv_reader = csv.reader(csv_file)
        row_number = 1
        for row in csv_reader:
            if row_number == 5:
                self.g_i.Soillayers[0].Zones[0].Top.set(float(row[1]))
            if row_number > 6:
                if len(row[0].strip()) != 0:
                    bottomOfLayer = float(row[0])
                    layer = row[1].strip()
                    try:
                        spt = float(row[2])
                    except ValueError:
                        spt = 0

                    if row_number != 7:
                       self.g_i.soillayer(0)
                    self.g_i.Soillayers[row_number-7].Zones[0].Bottom.set(bottomOfLayer)

                    for material in 示范Data:
                        if material["Material"] == layer:
                            mat_name = layer
                            if checkIfNDependent(material):
                                mat_name += f" N = {truncate_float_to_one_decimal_point(spt)}"

                            existing_mat = next((m for m in self.g_i.Materials if m.Identification == mat_name), None)
                            if existing_mat:
                                self.g_i.Soillayers[row_number-7].Soil.Material = existing_mat
                            else:
                                new_mat = self.g_i.soilmat()
                                sm = int(parse示范Data(material["SM"], spt))
                                props = {
                                    "aaa": mat_name,
                                    "bbb": sm,
                                    "ccc": parse示范Data(material["c11"], spt),
                                    "ddd": parse示范Data(material["d11"], spt),
                                }

                                # 动态补上模型特有栏位
                                model_props = {
                                    1: {"w1": "w21", "w31": "w41"},
                                }

                                if sm in model_props:
                                    for plaxis_key, csv_key in model_props[sm].items():
                                        props[plaxis_key] = parse示范Data(material[csv_key], spt)

                                # 其他共通性渗透性处理
                                props["xx1"] = parse示范Data(material["k"], spt)
                                props["xx2"] = parse示范Data(material["k"], spt)

                                new_mat.setproperties(*[item for pair in props.items() for item in pair])
                                self.g_i.Soillayers[-1].Soil.Material = new_mat

            row_number += 1

def read_coordinates_from_csv(csv_path):
with open(csv_path, ‘r’, encoding=’utf-8-sig’) as csv_file:
reader = csv.reader(csv_file)
rows = list(reader)
x = float(rows[1][1])
y = float(rows[2][1])
elevation = float(rows[3][1])
return x, y, elevation

以上是我部份的代码,执行后发现出一点问题,读取的资料有交叉读取的现像
举例来说:
1、我是利用这个pythond脚本在「分析软体」中进行自动输入建立资料档的方式
2、所以在资料夹中共放了3个csv档要当作资料档读取。
3、执行这个脚本之后,脚本执行是成功建立资料档,但是资料档有交叉读取的现像。
4 、问题是:
①资料夹中有4 个 csv 档:示范.csv及1.csv、2.csv、3.csv,其中针对读取1.csv、2.csv、3.csv里面的资料建立时,好像发现有交叉混乱的现像
②1.csv里面的资料应该是建立在同一个资料之中,以此类推…2.csv、3.csv也是
③但是发现:
Ⓐ1.csv档案中,栏位B1B4资料是建立在「分析软体」中A资料中(这个没有问题)
Ⓑ1.csv档案中,栏位B5、B7
后面,却是建立在「分析软体」中B资料中(怎麼会变成建立在下一个资料档中)
Ⓒ2.csv档案中,栏位B1B4资料是建立在「分析软体」中B资料中(这个没有问题)
Ⓓ2.csv档案中,栏位B5、B7
后面,却是建立在「分析软体」中C资料中(怎麼会变成建立在下一个资料档中)
Ⓔ3.csv档案中,栏位B1B4资料是建立在「分析软体」中C资料中(这个没有问题)
Ⓓ3.csv档案中,栏位B5、B7
后面,却是建立在「分析软体」中A资料中,因为资料夹只有3个csv档,所以变成循环建立在「分析软体」中B资料中(这个也是有问题)
5、请问前辈们,我上面这段脚本里是不是有哪里有写错?

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!