2024-04-18 20:05:43 发布
网友
我有一个python程序,只需要保存一行文本(计算机上特定文件夹的路径)。在
我已经将它存储在一个文本文件中并从中读取;但是,我更喜欢一个只有python文件的解决方案。在
因此,我问:有没有什么方法可以在python程序中保存文本,即使在程序关闭之后,也不需要创建任何新文件?在
编辑:我用py2exe把程序变成一个.exe文件:也许文件可以存储在那里,所以就好像没有文本文件一样?在
如果愿意,可以将文件名保存在Python脚本中,并在脚本本身中进行修改。例如:
import re,sys savefile = "widget.txt" x = input("Save file name?:") lines = list(open(sys.argv[0])) out = open(sys.argv[0],"w") for line in lines: if re.match("^savefile",line): line = 'savefile = "' + x + '"\n' out.write(line)
这个脚本将自己读入一个列表,然后再次打开自己进行写入,并修改savefile的行。每次运行脚本时,对savefile值的更改都将持久化。在
savefile
我不一定推荐这种自我修改的代码作为好的实践,但我认为这可能是您正在寻找的。在
似乎你想做的事情最好用Windows Registry来解决-我假设既然你提到你将从你的脚本创建一个exe。在
下面的代码片段尝试从注册表中读取字符串,如果找不到(例如程序第一次启动时),它将创建此字符串。没有文件,没有混乱。。。只是会有一个注册表项。如果从计算机中删除软件,则还应从注册表中删除该项。还要确保将MyCompany和MyProgram和My String的指示符更改为更有意义的内容。在
MyCompany
MyProgram
My String
有关详细信息,请参阅Python _winreg API。在
import _winreg as wr key_location = r'Software\MyCompany\MyProgram' try: key = wr.OpenKey(wr.HKEY_CURRENT_USER, key_location, 0, wr.KEY_ALL_ACCESS) value = wr.QueryValueEx(key, 'My String') print('Found value:', value) except: print('Creating value.') key = wr.CreateKey(wr.HKEY_CURRENT_USER, key_location) wr.SetValueEx(key, 'My String', 0, wr.REG_SZ, 'This is what I want to save!') wr.CloseKey(key)
注意,_winreg模块在python3中被称为winreg。在
_winreg
winreg
为什么不把它放在代码的开头呢。E、 g.启动代码:
import ... #import statements should always go first path = 'what you want to save'
现在,路径保存为字符串
如果愿意,可以将文件名保存在Python脚本中,并在脚本本身中进行修改。例如:
这个脚本将自己读入一个列表,然后再次打开自己进行写入,并修改
savefile
的行。每次运行脚本时,对savefile
值的更改都将持久化。在我不一定推荐这种自我修改的代码作为好的实践,但我认为这可能是您正在寻找的。在
似乎你想做的事情最好用Windows Registry来解决-我假设既然你提到你将从你的脚本创建一个exe。在
下面的代码片段尝试从注册表中读取字符串,如果找不到(例如程序第一次启动时),它将创建此字符串。没有文件,没有混乱。。。只是会有一个注册表项。如果从计算机中删除软件,则还应从注册表中删除该项。还要确保将
MyCompany
和MyProgram
和My String
的指示符更改为更有意义的内容。在有关详细信息,请参阅Python _winreg API。在
注意,
_winreg
模块在python3中被称为winreg
。在为什么不把它放在代码的开头呢。E、 g.启动代码:
现在,路径保存为字符串
相关问题 更多 >
编程相关推荐