繁体   English   中英

Python程序不会在文本文件中写入

[英]Python Program won't write in a text file

因此,当前我正在为客户端编写“成员数据库”程序。 该程序必须能够将所有输入的信息放入可以随时读取的文本文件中。 目前,我正在研究原型类型的东西,目前还不能说明最终产品。

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()

用户输入完信息后,需要将其写入,然后返回菜单。 目前,它只是不会写入文本文件。

您永远不会f.close()该文件。 您可以对with语句使用自动关闭功能:

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

顺便说一句:与读取相同:将读取内容放入with open() as f a中with open() as f块。

当我在与py脚本相同的文件夹中使用名为memberdatabase.txt的文件运行代码时,将文本保存到文件中没有任何问题。 您只需要确保完成后关闭文件即可。 它应该是这样的:

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM