第十一章 文件和流
- flush(),close()会把缓冲区的数据写到硬盘。
- read(),readline(),readlines()分别为读取字符,读取行,读取整个文件。
- fileinput() 和 readline()非常相似,只是fileinput把全部的行读到创建的xreadlines对象中,而fileinput则把全部的行读到列表。
文件迭代器不用显式的关闭文件:
(1) for line in open(filename):
process(line)#process()是自己定义的一个处理函数
(2)f.write(‘Hello\n’)#f为一个打开文件的指针
第十二章 创建GUI应用程序
winPython的使用
- 得把默认安装目录改到python的安装目录如(“c:/python27”)
wxPython相关的程序只能在cmd窗口运行,因为IDLE是用Tkinker开发的,它会和wxWidget的mainloop()冲突。
书上的例子,敲太久了,想保存下来。#组件的大小会相对于窗口的大小发生变化 import wx def load(event): file = open(filename.GetValue()) contents.SetValue(file.read()) file.close() def save(event): file = open(filename.GetValue(),'w') file.write(contents.GetValue()) file.close() app = wx.App() win = wx.Frame(None, title="Simple Editor", size=(410,335)) bkg = wx.Panel(win) loadButton = wx.Button(bkg, label = 'Open') loadButton.Bind(wx.EVT_BUTTON,load)#绑定事件load saveButton = wx.Button(bkg, label = 'Save') saveButton.Bind(wx.EVT_BUTTON,save)#绑定事件save filename = wx.TextCtrl(bkg) contents = wx.TextCtrl(bkg,style = wx.TE_MULTILINE | wx.HSCROLL) hbox = wx.BoxSizer() hbox.Add(filename,proportion=1,flag=wx.EXPAND) hbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5) hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5) vbox = wx.BoxSizer(wx.VERTICAL) vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5) vbox.Add(contents,proportion=1,flag=wx.EXPAND | wx.LEFT | wx.BOTTOM | wx.RIGHT,border=5) bkg.SetSizer(vbox) win.Show() app.MainLoop()
第十三章 数据库支持
使用sqlite数据的一个例子,Python27自带了sqlite数据库。
数据为:
zmy,text2,45,45,67,78,88,9,78,78
xc,text1,45,45,67,78,88,9,78,78
插入数据库代码:
import sqlite3
def convert(value):
if value.startswith('`'):
return value.strip('`')
if not value:
value = '0'
return value
conn = sqlite3.connect('foo.db')
curs = conn.cursor()
curs.execute('''
CREATE TABLE foods1234(
id TEXT PRIMARY KEY,
desc TEXT,
water FLOAT,
kcal FLOAT,
protein FLOAT,
fat FLOAT,
ash FLOAT,
carbs FLOAT,
fiber FLOAT,
suger FLOAT
)
''')
query = 'INSERT INTO FOODs1234 VALUES(?,?,?,?,?,?,?,?,?,?)'
for line in open(r'C:\Users\zmy\Desktop\sr28upd\ADD_ABBR.txt'):
fields = line.split(',')
vals = [convert(f) for f in fields[:]]
curs.execute(query,vals)
conn.commit()
conn.close()
查询数据库代码:
import sqlite3
conn = sqlite3.connect('foods1234.db')
curs = conn.cursor()
query = 'SELECT * FROM foods1234'
print query
curs.execute(query)
name = [f[0] for f in curs.description]
for row in curs.fetchall():
for pair in zip(name,row):
print '%s: %s' % pair
print