如何从python脚本更改python文件中的变量值

如何从python脚本更改python文件中的变量值,python,Python,我目前有一个python文件,其中包含一组带有值的全局变量。我想从一个单独的python脚本中永久更改这些值。我试过setattr之类的,但似乎不起作用。有办法做到这一点吗?简单的回答是:不要。不值得这么麻烦 听起来您正试图创建一个配置文件,然后让应用程序更新它。您应该尝试使用ConfigParser,这是一个内置模块,可以为您轻松地读写配置文件: 当前有一个python文件,其中包含一组具有值的全局变量 让我们假装它看起来像这样全局.py this = 1 that = 2 import o

我目前有一个python文件,其中包含一组带有值的全局变量。我想从一个单独的python脚本中永久更改这些值。我试过setattr之类的,但似乎不起作用。有办法做到这一点吗?

简单的回答是:不要。不值得这么麻烦

听起来您正试图创建一个配置文件,然后让应用程序更新它。您应该尝试使用ConfigParser,这是一个内置模块,可以为您轻松地读写配置文件:

当前有一个python文件,其中包含一组具有值的全局变量

让我们假装它看起来像这样<代码>全局.py

this = 1
that = 2
import os
os.rename( "globals.py", "globals.bak" )
with open( "globals.py", "w" ) as target:
    for variable in ('some', 'list', 'of', 'sensible', 'globals'):
        target.write( "{0!s} = {1!r}".format( variable, globals()[variable] )
文件中没有其他内容。没什么

让我们进一步假设此文件的使用方式如下

from globals import *
让我们进一步假设我们有一些需要“更新”globals.py的模拟

this = 1
that = 2
import os
os.rename( "globals.py", "globals.bak" )
with open( "globals.py", "w" ) as target:
    for variable in ('some', 'list', 'of', 'sensible', 'globals'):
        target.write( "{0!s} = {1!r}".format( variable, globals()[variable] )
基本上,您可以从全局字典中重新创建Python代码


这是一个可怕的解决办法。请不要实际使用它。

您的意思是要从另一个脚本实际修改一个脚本吗?我想知道标准库是否有能力在内存中解析Python源文件,更改它,然后写入a文件?您的另一个问题与主题无关。请不要在这里提及。请删除对“其他问题”的提及。请集中注意力。这正是我想要做的。我想如果没有其他方法的话,configparser就是…@Iango,还有另一种方法,但这会带来更多的麻烦。我用上面的代码创建了相关的python文件来测试它,我得到了这个错误:python test.py Traceback(最后一次调用):File“test.py”,第7行,在for variable in globals:TypeError:“内置函数”或“方法”对象不可编辑我做错什么了吗?是的。你做错了什么。你在不假思索地打字。有时发布的代码有错误。在输入代码之前,您需要考虑一下,看看是否理解代码。也许我对python的理解不够好,因为我对它比较陌生?我把你的密码打出来,仔细考虑,最后抓住了丢失的帕伦斯。但是我认为globals(在编辑之前)指的是这个文件,或者是一些内置的python变量。无论如何,谢谢你的解决方案。我试过你的和卡尔的。