[英]Saving data in Python without a text file?
我有一个python程序,只需要保存一行文本(计算机上特定文件夹的路径)。
我已经设法将其存储在文本文件中并从中读取内容; 但是,我更喜欢仅使用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
值的更改将保持不变。
我不一定会推荐这种自我修改的代码作为一种好的做法,但是我认为这可能是您想要的。
使用Windows注册表可以更好地解决您想做的事情-我假设既然您提到过,您将通过脚本创建一个exe。
下面的代码片段尝试从注册表中读取一个字符串,如果找不到该字符串(例如,首次启动该程序时),它将创建该字符串。 没有文件,没有混乱...除了周围会有一个注册表项。 如果从计算机上删除软件,则还应该从注册表中删除密钥。 另外,请确保将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
模块在Python 3中称为winreg
。
为什么不把它放在代码的开头。 例如开始您的代码:
import ... #import statements should always go first
path = 'what you want to save'
现在,您已将路径另存为字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.