You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为文本文件每一行创建对象并迭代命名、逐行赋值对应属性?

问题解答

需求可实现性说明

这个需求技术上可以实现,但确实不推荐动态生成st0、st1这类独立变量名,这种写法会大幅降低代码可维护性,后续你要批量操作站点对象时会非常麻烦,用列表/字典存储对象是更合理的方案。

不推荐但可达成你要求的实现方案

如果你确实需要生成st0、st1这类全局变量,可以通过修改globals()全局命名空间实现,同时修正你现有代码的语法、资源泄漏等问题:

class Site:
    # 修正__init__方法的缩进错误
    def __init__(self, siteName, siteSerial):
        self.name = siteName
        self.serial = siteSerial

# 用with语句自动关闭文件,避免资源泄漏
with open('/path/to/sites.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

for i in range(len(lines)):
    # 去除首尾空白(包括换行符)后再分割,避免属性带无效字符
    split = lines[i].strip().split(',')
    # 往全局命名空间注入对应名称的变量
    globals()[f"st{i}"] = Site(split[0], split[1])

运行后你就可以直接调用st0.name、st1.serial这类属性了。

更推荐的标准实现方案

更建议你用列表存储所有Site对象,后续遍历、筛选操作都更方便,也完全保留按序号访问的能力:

class Site:
    def __init__(self, siteName, siteSerial):
        self.name = siteName
        self.serial = siteSerial

st = []
with open('/path/to/sites.txt', 'r', encoding='utf-8') as f:
    for line in f:
        name, serial = line.strip().split(',')
        st.append(Site(name, serial))

使用时你可以用st[0]对应原来的st0,st[1]对应st1,既可以按索引取值,也可以直接用for site in st:批量遍历所有站点对象。

内容的提问来源于stack exchange,提问作者Jeremy Bilben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:39:03