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】 转载请注明
相关文章:
发表新的评论
文章分类
文章归档
标签
deb ,
,
蓝屏 ,
select ,
html5 ,
tomcat ,
gcc ,
ajax ,
apt-get update ,
选择 ,
js加密 ,
java ,
工作 ,
ocr ,
AngularJs ,
感慨 ,
work ,
click ,
javascript ,
反向代理 ,
ip查询 ,
空间查询 ,
word ,
ECS服务器 ,
centos ,
杂 ,
StartupWMClass ,
前端 ,
js ,
vmdk ,
感概 ,
select2 ,
virtualbox ,
gg代理 ,
share ,
seo ,
风筝 ,
email ,
ASR ,
转换 ,
cool ,
activiti-ui ,
喵小凡 ,
@PropertySource ,
ckeiditor ,
网站攻击 ,
SRILM ,
风景 ,
plugin ,
vdi ,
扩容 ,
chorme ,
阿里云 ,
KALDI ,
num ,
packer2 ,
pic ,
gg镜像 ,
win8.1 ,
ecs ,
mysql ,
Ubuntu ,
快递查询 ,
nginx ,
ubuntu ,
swap ,
maven ,
entropy_avail ,
tencent ,
语音识别 ,
prerender ,
xfce4 ,
进度条 ,
存储过程 ,
activiti ,
熵 ,
日出 ,
练笔 ,
虞美人 ,
nodejs ,
词 ,
demo ,
jquery ,
random ,
linux ,
cat ,
bootstrapValidator ,
angularJs ,
live ,
on ,
gg ,
雪 ,
婚姻 ,
景色 ,
@Autowired ,
pdf ,
emqttd ,
优化 ,
thchs30 ,
opencv ,