【问题标题】:creating txt file containing variablenames as string plus value创建包含变量名作为字符串加值的 txt 文件
【发布时间】:2020-11-06 15:47:05
【问题描述】:

我想创建一个包含给定变量列表的文件,例如:

a1 = 3
a2 = 3
a3 = 4
a4 = 6
a5 = 'test'
a6 = 19
a7 = 19


输出应该如下所示:

test.txt

a1 = 3
a2 = 3
a3 = 4
a4 = 6
a5 = 'test'
a6 = 19
a7 = 19

txt 文件的内容。

建立模型时需要它。

我试过这样:

def namestr(obj, namespace):
    names = [name for name in namespace if namespace[name] is obj]
    name = [n for n in names if 'a' in n]
    return name[0]

with open("setupfile.txt", "w") as setupfile:
    x = [a1, a2, a3, a4, a5, a6, a7]
    for name in x:
        print(name)
        setupfile.write(namestr(name, globals()) + "=" + repr(name) +"\n")
        print(repr(name))
    setupfile.close()

但这不是一个充分的解决方案。具有相同值的变量在文本文件中具有相同的名称。

是否有更好的解决方案来创建所描述的文本文件?也许是获取变量名称的更好方法。

【问题讨论】:

    标签: python global variable-names


    【解决方案1】:

    我也遇到了同样的问题。如果它适合您,您可能应该尝试这种方式。

    class NewClass(object): pass
    
    names = NewClass()
    vars = ['a1', 'a2', 'a3','a4','a5','a6','a7']
    
    for v in vars: 
        setattr(names, v, eval(v)) 
    
    
    with open("setupfile.txt","w") as setupfile:
        members = [attr for attr in dir(names) if not callable(getattr(names, attr)) and not attr.startswith("__")]
    
        for i in range(0,len(members)):
            #print(name)
            setupfile.write(members[i] + '=' + str(getattr(names, members[i])) + "\n")
            #print(repr(name))
    setupfile.close()`
    

    【讨论】:

    • 谢谢! @vallepu 这太棒了!非常感谢您的解决方案!干得好!
    • 不客气。实际上我对 python 还很陌生,很高兴听到你对我的努力表示赞赏:)
    • 但是您学习 Python 的方法似乎非常棒。你取得了巨大的进步!继续使用您出色的编码技能!再次感谢它为我节省了很多时间!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多