我的问题是如何将对象填充到某个现有文件中。假设我的文件名是“abc.txt”。我的意思是fname,lname,age,gender应该全部填入文件
#!usr/bin/python
class People:
def __init__(self, fname=None, lname=None, age=None, gender=None):
self.fname = fname
self.lname = lname
self.age = age
self.gender = gender
def display(self):
print self.fname
ppl1 = People('John','W','Cooper',23,'Male')
ppl2 = People('Jack','A','Kalis',40,'Male')
ppl1.display()
ppl2.display()
答案 0 :(得分:0)
如果您只想将属性(以逗号分隔)写入文件,则可以执行以下操作:
ppl = People('John', 'Cooper', 23, 'Male')
f = open('abc.txt', 'w')
ppl_attrs = [ppl.fname, ppl.lname, str(ppl.age), ppl.gender]
f.write(','.join(ppl_attrs))
f.close()
答案 1 :(得分:0)
如python文档here中所述,您只需要写入文件的末尾(在检查它是否首先存在之后)。
答案 2 :(得分:0)
class People:
def __init__(self, fname=None, lname=None, age=None, gender=None):
self.fname = fname
self.lname = lname
self.age = age
self.gender = gender
def display(self):
print self.fname
people = [People('John','W Cooper',23,'Male'),
People('James','W Cooper',30,'Male'),
People('Kate','W Cooper',20,'Female')]
f = open("abc.txt", "w")
for person in people:
f.write( person.fname +","+ person.lname +","+ str(person.age) +","+ person.gender + '\n' )
person.display()
f.close()
答案 3 :(得分:0)
ppl = People('John W','Cooper',23,'Male')
with open("abc.txt", 'w') as f:
f.write(",".join((ppl.fname, ppl.lname, str(ppl.age), ppl.gender)))
答案 4 :(得分:0)
我只想保存,文件还可以。但db是更好的选择。 sqlite非常简单,很好的数据库,它包含在python中。 如何使用sqlite?
下面是示例代码。 (抱歉。快速而肮脏的代码)
#!usr/bin/python
import sqlite3
class People:
def __init__(self, fname=None, lname=None, age=None, gender=None):
self.fname = fname
self.lname = lname
self.age = age
self.gender = gender
self.save()
def save(self):
conn = sqlite3.connect('people.db')
c = conn.cursor()
c.execute("""create table if not exists
tbl_people(fname text, lname text,
age integer, gender text,
primary key (fname, lname) )""")
c.execute("""insert or replace into tbl_people(fname, lname, age, gender)
values ('%s', '%s', %d, '%s')
""" % (self.fname, self.lname, self.age, self.gender) )
conn.commit()
conn.close()
def display(self):
print self.fname
def search(fname, lname):
conn = sqlite3.connect('people.db')
c = conn.cursor()
c.execute("select * from tbl_people where fname='%s' and lname='%s'"%(fname,lname))
ppl = c.fetchone()
conn.close()
if ppl is not None:
return People(ppl[0], ppl[1], ppl[2], ppl[3])
else:
return None
ppl = People('John','Cooper',23,'Male')
ppl2 = People('Jane','Cooper',22,'Female')
ppl3 = search('John', 'Cooper')
ppl.display()
ppl3.display()