Python 程序不会写入文本文件

Python Program won't write in a text file

所以,目前我正在为客户编写 "Member Database" 程序。该程序需要能够将所有输入的信息放入一个可以随时读取的文本文件中。目前,我正在研究原型类型的东西,目前还不能代表最终产品。

import os

def add_member():
    f = open("memberdatabase.txt","a+")
    member_name = input('Input Member Name\n')
    member_age = int(input('Input Member Age\n'))
    member_ID = int(input('Input Member ID\n'))
    member_job = input('Input Member Job\n')

    dicto = {member_name:{'Age':member_age,
                          'ID':member_ID,
                          'Job':member_job}}
    strdicto = str(dicto)
    f.write(strdicto)
    menu()

def read_data():
    f = open("memberdatabase.txt","r")
    contents = f.read()
    print(contents)
    input('Press enter to return to menu')
    menu()

def menu():
    seperator()
    x = int(input('Enter an option\n'
                  '[1] Add a member\n'
                  '[2] Read Data\n'))
    if x == 1:
        add_member()
    elif x == 2:
        read_data()
    else:
        print('Not an option, retry!')
        menu()

menu()

用户输入完信息后,需要写入然后return到菜单。目前,它不会写入文本文件。

你从来没有f.close()这个文件。您可以使用 with 语句自动关闭:

with open('...', 'a+') as f:
    ...
    # f.close() is called automatically at the end of this block.

顺便说一下:与阅读相同:将阅读放在 with open() as f 块中。

当我 运行 你的代码和一个名为 memberdatabase.txt 的文件位于与 py 脚本相同的文件夹中时,将文本保存到文件中没有问题。您只需确保在完成后关闭文件。它应该是这样的:

f = open("memberdatabase.txt","a+")
member_name = input('Input Member Name\n')
member_age = int(input('Input Member Age\n'))
member_ID = int(input('Input Member ID\n'))
member_job = input('Input Member Job\n')

dicto = {member_name:{'Age':member_age,
                          'ID':member_ID,
                          'Job':member_job}}
strdicto = str(dicto)
f.write(strdicto)
f.close()

这是我在添加两个成员后在文件中得到的输出:;

{'Peter': {'Age': 26, 'ID': 21, 'Job': 'Manager'}}{'Bob': {'Age': 34, 'ID': 1209, 'Job': 'Manager'}}

我能够关闭文件然后再次打开,文本仍然存在。希望这对您有所帮助,以便您现在可以在您的代码中实现它。

  • 当你想强制你的程序写入时使用f.flush() 文件。
  • 当你完成阅读/写作时总是使用f.close() 你的文件。