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

时间:2017-06-04 10:20:59

标签: python file namedtuple

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

显示属性对象
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中提取数据?

2 个答案:

答案 0 :(得分:1)

你可以这样做:

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

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

答案 1 :(得分:0)

当您将数据写入文件时,它只是一个字符串,当您阅读它时,您只能获得字符串。

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