我正在尝试创建一个脚本,用于从充当密码管理器的.txt文件中添加/更改/检索密码。
在研究此处提出的问题的历史记录时,大多数用户的问题似乎是他们忘记了flush()
或close()
他们的文件流。
theList = {}
# Populates theList with pairs
def getData():
with open('pass_data.txt', 'w+') as data:
for line in data:
keyValuePair = line.split()
theList[keyValuePair[0]] = keyValuePair[1]
# Writes pairs from theList to file 'pass_data.txt'
def putData():
with open('pass_data.txt', 'w+') as data:
for k, v in theList.items():
data.writelines([k, ' ', v, "\n"])
data.flush()
# Appends new pair to theList or overwrites if already exists
def setPass(service, password):
getData()
theList[service] = password
putData()
# Retrieves password from given key 'service'
def getPass(service):
getData()
print theList[service]
我在阅读完问题后添加flush()
并没有任何区别......我的.txt仍为空,从命令行调用该函数时我无法getPass('service')
因为它说没有关键价值' service'。
我还有第二个问题,有人也可以在这里为我回答。如果我使用vim vim -u ~/.vimrc_encrypted -x pass_data.txt
中的blowfish加密pass_data.txt文件,有没有办法可以传递密钥来解密文件作为setPass()
和getPass()
的参数?
答案 0 :(得分:3)
来自docs:
模式' r +',' w +'和' a +'打开文件进行更新(阅读和 写作);请注意' w +'截断文件。追加' b'到模式 在二进制模式下打开文件,在区分它们的系统上 二进制和文本文件;在没有这种区别的系统上, 添加''没有效果。
在getData
中,您在阅读文件之前基本上是截断文件,因此它显示为空。