python基礎教程學習筆記

第十一章 文件和流

  1. flush(),close()會把緩衝區的數據寫到硬盤。
  2. read(),readline(),readlines()分別爲讀取字符,讀取行,讀取整個文件。
  3. fileinput() 和 readline()非常相似,只是fileinput把全部的行讀到創建的xreadlines對象中,而fileinput則把全部的行讀到列表。
  4. 文件迭代器不用顯式的關閉文件:

    (1) for line in open(filename):
    process(line)#process()是自己定義的一個處理函數
    (2)f.write(‘Hello\n’)#f爲一個打開文件的指針

第十二章 創建GUI應用程序

winPython的使用

  1. 得把默認安裝目錄改到python的安裝目錄如(“c:/python27”)
  2. 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
發佈了36 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章