python 如何在文件处理中从 namedtuple 中提取数据

how to extract data from namedtuple in file handling in python

在 python 的文件处理中从 namedtuple 中提取数据时遇到问题。 它在 --- 位置

显示 属性 对象
from collections import namedtuple

filename=input("Enter name of file ")
Data=namedtuple('Data',['name','id','balance'])

def write():
    file=open(filename,'a')
    name=input("Enter name ")
    idee=input("Enter ID ")
    bal=input("Enter balance ")   
    data=Data(name,idee,bal)
    file.write(str(data))
    file.close()

def read():
    file=open(filename,'r')
    for line in file:
        print(Data.name,"\t",Data.id,"\t",Data.balance,"\n")

write()
write()
read()

我应该如何提取 data.name 中的数据?

你可以这样做:

print("%s\t%d\t%s\n" % line)

打印命名元组的内容。官方文档可能不是很明显,但是here is a good tutorial to understand named tuples

写入文件时,数据只是一个字符串,读取时只能得到字符串。

from collections import namedtuple
import pickle
filename=input("Enter name of file ")
Data=namedtuple('Data',['name','id','balance'])

def write():

    name=input("Enter name ")
    idee=input("Enter ID ")
    bal=input("Enter balance ")   
    data=Data(name,idee,bal)
    with open(filename,'ab') as f:
       pickle.dump(data,f)

def read():
    with open(filename,'rb') as f:
       while True:
        try:
         data=pickle.load(f)
         print(data.name,"\t",data.id,"\t",data.balance,"\n")
        except:
            break

write()
write()
read()