从python脚本写入后,.txt文件为空 - / - 传递解密密钥

时间:2014-03-31 19:37:03

标签: python encryption blowfish

我正在尝试创建一个脚本,用于从充当密码管理器的.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()的参数?

1 个答案:

答案 0 :(得分:3)

来自docs

  

模式' r +',' w +'和' a +'打开文件进行更新(阅读和   写作);请注意' w +'截断文件。追加' b'到模式   在二进制模式下打开文件,在区分它们的系统上   二进制和文本文件;在没有这种区别的系统上,   添加''没有效果。

getData中,您在阅读文件之前基本上是截断文件,因此它显示为空。