Python学习笔记四-存储文件GUI
 2019-03-08 11:46:31   229   0   

本文最后更新于天前,文中介绍内容及环境可能已不适用.请谨慎参考.

python库

 

数据简单存储

shelve ,键值对本地存储

本地文件database

需要保持 最后close() ,要确定赋值成功  db[xx]=xxxx

import shelve

def testShelve():
    db=shelve.open("database")  #简单本地数据库,key,val
    try:
      
        if("name" in db.keys()):
            name=db["name"]
            pprint.pprint("name:"+name)
            print(bool(name))
            print(not bool(name))
            if(bool(name)):
                print("hello!",name)
                db["name"]=input("input you new name:")
            else:
                db["name"]=input("no name,input you name:")
        else:
            db["name"]=input("hi!welcome, please input you name:")


        db["k1"]="11111"
        db["k2"]={"k1":"v1","k2":"v2"}
        
        
    finally:
        db.close()
        pass
    
    pass

 

 

 

正则匹配

 

match只匹配开头

search只返回第一个

findall全部

sub替换,可以使用组号 \1

 


import sys
import pprint
import re

def testRe():

  
    #patter2=r'"(.*)"\s+.*/>$'
    #下面 VERBOSE 等效上面,可以增加注释,自动剔除所有空格注释
    patter2= re.compile(r'''
        "(.*)"  #匹配group
        \s+     #匹配空格
        .*/>    #匹配结尾
    ''',re.VERBOSE)
    html=r'<img src="//images.11.com/1/2.png" 123123123 />'
    if(re.match(patter2,html)):   # match只匹配从头开头 No match find!
        #匹配的对象
        reobj=re.match(patter2,html)
        if(reobj):
            print("group0:"+reobj.group(0))
            print("group1:"+reobj.group(1))
    else:
        print("No match find!")

    if(re.search(patter2,html)):   # search 所有位置寻找,只返回第一个
        #匹配的对象
        reobj=re.search(patter2,html)
        print("group0:"+reobj.group(0))  #group0:"//images.11.com/1/2.png" 123123123 />
        print("group1:"+reobj.group(1))  #group1://images.11.com/1/2.png
    else:
        print("No  search find!")

    regdata= re.findall(patter2,html)  #返回的所有匹配项的list
    if(regdata):
        print("find all:")
        for v in regdata:
        #print(v.group(0))
            print(v)

    newhtml=re.sub(patter2,r"https:\1",html)  #单纯替换, 匹配格式不一致 
    #将匹配到的所有数据替换为第一个()中的内容
    print("new:",newhtml)  #new: <img src=https://images.11.com/1/2.png
    print("html:",html)

 

 

file

 

文件为可迭代对象。

 

 

 


def test():

    par_dir = os.path.dirname(os.path.abspath(__file__))
    print(par_dir)
    os.chdir(par_dir)

    f= open("1.txt","w")
    f.write("00000")
    #f.seek(2)
    f.write("100data\r")
    f.write("100data\n")
    #f.writelines("sdfsdf")
    f.close()

    for line in fileinput.input("1.txt"):
        print(line)

    fr=open("1.txt")
    print(fr.readlines())

    if(sys.stdin):
        for line in sys.stdin:
            print(line)

 

GUI

wxPython

基本跟c#类似,JFX也差不多,感觉画界面的都是一个样子╮( ̄▽ ̄)╭,懒得熟悉api了。

一层层的套

其他的GUI,各自为政,也是可以的

 

wxPython安装

python.exe -m pip install wxPython

 

简单窗体,看看就好,用的时候再看吧。

import wx

class myApp(wx.App):
    def __init__(self,*args,**kw):
        super(myApp,self).__init__(*args,**kw)

        self.form=myWxFrame(None,title="测试")
        self.form.Show()



class myWxFrame(wx.Frame):

    def __init__(self,*args,**kw):
        super(myWxFrame,self).__init__(*args,**kw)

        panel=wx.Panel(self)

        vbox=wx.BoxSizer()

        self.txt=wx.TextCtrl(panel)
        self.txt.Label="11"
        self.txt.Bind(wx.EVT_TEXT,self.textchange,self.txt)
        vbox.Add(self.txt)

        panel.SetSizer(vbox)

        self.makeMenuBar()


        self.CreateStatusBar()
        self.SetStatusText("status:ok!")

    def textchange(self,event):
        wx.MessageBox(self.txt.GetValue(),style=wx.OK)

    def makeMenuBar(self):
        fmenu= wx.Menu()

        fmenu.Append(-1,"&Hello...\tCtrl-H","sssssssss")

        menuBar=wx.MenuBar()
        menuBar.Append(fmenu,"&Hello")

        self.SetMenuBar(menuBar)

if (__name__ == "__main__"):
    #testWx()
    app=myApp()
    app.MainLoop()

 

 

简单数据库

sqlite3

 

import sqlite3


def testCreateDb():

    conn=sqlite3.connect("dbtest")
    cs=conn.cursor()


    cs.execute('''
    drop table test_table
    ''')

    cs.execute('''
    create table test_table(
        id text primary key,
        desc text,
        name text,
        val float
    )
    ''')

    f=open("insert.sql","w")
    try:
        for i in range(5):
            f.write('insert into test_table values('+str(i)+',"test","test_name",1.0)\n')
    finally:
        f.close()

    insert='insert into test_table values(22,"test","test_name",1.0)'
    cs.execute(insert)
    for line in open("insert.sql"):
        cs.execute(line)
    
    

    conn.commit()
    conn.close()

def queryDb():
    conn=sqlite3.connect("dbtest")
    cs=conn.cursor()

    select="select * from test_table"
    cs.execute(select)

    colstr=[]
    cols=cs.description
    for col in cols:
        colstr.append(col[0])

    print("\t".join(colstr))
    print("="*30)

    for row in cs.fetchall():
        print(row)



if (__name__ == "__main__"):
    testCreateDb()
    queryDb()

 


 2019-03-08 16:54:37 
 0

  本文基于CC BY-NC-ND 4.0 许可协议发布,作者:野生的喵喵 固定链接: 【Python学习笔记四-存储文件GUI】 转载请注明



发表新的评论
{{s_uid}}   , 欢迎回来.
您的称呼(*必填):
您的邮箱地址(*必填,您的邮箱地址不会公开,仅作为有回复后的消息通知手段):
您的站点地址(选填):
留言:

∑( ° △ °|||)︴

(๑•̀ㅂ•́)و✧
<( ̄) ̄)>
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
[]~( ̄▽ ̄)~*
( ̄ˇ ̄)
╮( ̄▽ ̄)╭
( ̄ε(# ̄)
(⊙ˍ⊙)
( ̄▽ ̄)~*
∑( ° △ °|||)︴

文章分类

可能喜欢 

KxのBook@Copyright 2017- All Rights Reserved
Designed and themed by 野生的喵喵   1622213   44926