最近陆陆续续写了很多python的小脚本
记下一点东西方便以后查阅
#1.调用sqlite3数据库 con=sqlite3.connect(xxx) con.text_factory = str #防止中文乱码 cur=con.cursor() cur.execute("xx")#执行语句 con.commit()#写入数据库 #2.获取剪切板内容 def getText(): w.OpenClipboard() try: d = w.GetClipboardData(win32con.CF_TEXT) w.EmptyClipboard() w.CloseClipboard() return d except: w.CloseClipboard() return '' def setText(aString): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardData(win32con.CF_TEXT, aString) #如果是中文要重新编码 w.CloseClipboard() #3.随父线程结束的子线程 tee=threading.Thread(target=read) tee.setDaemon(True) #设置跟随父线程 tee.start() #4.调用dll from win32con import * from ctypes import * user32=windll.LoadLibrary('user32.dll') user32.MessageBoxW(0,'PASS!'.decode('utf-8'),'WIN'.decode('utf-8'),0|MB_SYSTEMMODAL) #5.全局键盘鼠标监听 多线程 hm = pyHook.HookManager() hm.KeyUp=ee #抬起函数 hm.KeyDown = onKeyboardEvent #按下函数 返回值均要为True,不然会死锁 hm.HookKeyboard() #开始监听 # pythoncom.PumpMessages()#循环获取消息 GUI中不需要 hm.UnhookKeyboard()#解除监听,不解除进程会假死,而且会无法关闭 #6.模拟键盘输入 from win32api import * keybd_event(76,0,0,0)#76为相应键码,按下 keybd_event(76,0,2,0)#抬起 def output(c=""): #输出字符串,这边符号只设置了底下几种,其他均没设置 for j in range(len(c)): i=str(c[j]) flag=0;t=0 if i.islower(): i=i.upper();t=ord(i) elif i.isupper(): flag=1;t=ord(i) elif i=='@': flag=1;t=ord('2') elif i=='_': flag=1;t=189 elif i=='-': t=189 elif i=='.': t=190 else: t=ord(i) if flag==1: keybd_event(16,0,0,0) keybd_event(t,0,0,0) keybd_event(t,0,2,0) if flag==1: keybd_event(16,0,2,0) #7.获取含某字符串的窗口hwnd hhwd=0;#hwnd def iterate(hwnd,nouse): global hhwd if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd): if GetWindowText(hwnd).find('Mozilla Firefox')!=-1: hhwd=hwnd return True EnumWindows(iterate, 0) #8.置顶窗口 windll.user32.SwitchToThisWindow(hwnd,True) #经测试这种最有效 #9.按hwnd关闭窗口 win32gui.SendMessage(hhwd,WM_CLOSE,0,0) #10.清空Text ok.delete(0.0,END) ok.insert(END,'123') #11.遍历文件夹并改名 def rename(): path=eny_path.get() for a,v,c in os.walk(path): t=len(str(int(len(c)/2))) for n in c: p=os.path.splitext(n) x=p[0] while len(x)<t: x='0'+x x=x+p[1] os.rename(os.path.join(a,n),os.path.join(a,x)) #12.利用喇叭蜂鸣…… winsound.Beep(1500,400) #13.注册主程序析构函数 def xxit(): pass atexit.register(xxit) #14.利用lamba给button等传递参数 Button(text='bad',command=lambda:change(1),hei=1,width=5) #15.置顶Tkinter窗口 root.wm_attributes('-topmost',1) #16.通过代理联网 from urllib import quote import cookielib, urllib2 class uu(): # 准备cookie cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) # 设置代理服务器 proxy_info = { 'host' : 'mengqidlufei.jks5.com' , 'port' :52385 } proxy_support = urllib2 . ProxyHandler ( { 'http' : \ 'http://%(host)s:%(port)d' % proxy_info } ) # 构造opener def __init__(self): opener = urllib2.build_opener(self.cookie_support, self.proxy_support) urllib2.install_opener(opener) # 打开网页 def open(self,url): # print quote(url,':/=?') page = urllib2.urlopen(quote(url,':/=?')) t= page.read() page.close() return t #17.修改系统时间,3倍 import os,time,subprocess def changetime(t): l=time.localtime(t) dat="date %u-%02u-%02u"%(l.tm_year,l.tm_mon,l.tm_mday) tm="time %02u:%02u:%02u"%(l.tm_hour,l.tm_min,l.tm_sec) subprocess.Popen(dat, shell=True) subprocess.Popen(tm, shell=True) print 'ok' def change(): t=time.time() while 1: t+=60 changetime(t) time.sleep(20) #18.py2exe win32的dll错误解决办法 from distutils.core import setup import py2exe,os includes = ["encodings", "encodings.*"] mfcfiles = [os.path.join(mfcdir, i) for i in ["mfc90.dll", "mfc90u.dll", "mfcm90.dll", "mfcm90u.dll", "Microsoft.VC90.MFC.manifest"]] data_files = [("Microsoft.VC90.MFC", mfcfiles),] #加入mfc文件 options = {"py2exe": { "compressed": 1, "optimize": 2, "includes": includes, # "bundle_files": 1 } } setup( version = "3.0", description = xxx, name = xxx, options = options, data_files = data_files, # zipfile=None, windows=[{"script": "v3.0.pyw" }], ) #19.PMW打包问题 #1.首先切换到源目录下:C:\Python27\Lib\site-packages\Pmw\Pmw_1_3_3\bin #2.然后执行 python bundlepmw.py C:\Python27\Lib\site-packages\Pmw\Pmw_1_3_3\lib (注意是lib) #3.然后会在bin下生成个Pmw.py (貌似2.0生成的有问题) #4.复制Pmw.py和lib里的PmwBlt.py和PmwColor.py到要打包的文件夹下 #5.按常规打包即可