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

时间:2017-03-23 13:55:31

标签: python file-writing

所以,目前我正在撰写会员数据库"客户计划。程序需要能够将所有输入的信息放入可以随时读取的文本文件中。目前,我正在研究一种原型型产品,目前并不代表最终产品。

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

当我在与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'}}

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

答案 2 :(得分:0)

  • 如果要强制程序写入,请使用 final DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); final DateFormat dateFormat_year = new SimpleDateFormat("yyyy"); final DateFormat dateFormat_month = new SimpleDateFormat("MM"); final DateFormat dateFormat_day = new SimpleDateFormat("dd"); Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal.getTime())); System.out.println(dateFormat_year.format(cal.getTime())); System.out.println(dateFormat_month.format(cal.getTime())); System.out.println(dateFormat_day.format(cal.getTime())); 文件。
  • 完成阅读/写作后,请始终使用 f.flush() 你的档案。