引言logging的基本用法網上很多,這里就不介紹了。在引入正文之前,先來看一個需求:假設需要將某功能封裝成類庫供他人使用,如何處理類庫中的日志?數年前在一個C#開發的項目中,我用了這樣的方法:定義一個logging基類,所有需要用到日志的類都繼承這個基類,這個基類中定義一個LogHandler事件,該事件用于實現具體的記錄日志動作,同時可以通過將類A的LogHandler委托掛到類B的LogHandler上,實現將兩個類的日志信息添加到一起。自從看了py
系統 2019-09-27 17:47:37 1882
1.a=[]arrays=[a*3]arrays其實為[[]]2.arrays=[a]*N看上去是創建了二維數組,但是只是創建N個指向a的引用,所以一旦a改變,arrays中N個list也會隨之改變eg:a=[]N=3arrays=[a]*3arrays[0].append(1)#看上去只為第一個list添加整數1,實際上---print(arrays)輸出為[[1],[1],[1]]3.arrays=[[]foriinrange(N)]eg:N=3arr
系統 2019-09-27 17:47:28 1882
windows10:1,先要pip安裝pydotplus和graphviz:pipinstallpydotpluspipinstallgraphviz2,www.graphviz.org下載msi文件并安裝。3,系統環境變量path中增加兩項:C:\ProgramFiles(x86)\Graphviz2.38\binC:\ProgramFiles(x86)\Graphviz2.38#確認graphviz是安裝在上面路徑當中。4,python中使用方法:fr
系統 2019-09-27 17:47:26 1882
目的是能使用Python進行rtmp推流,方便在h264幀里加入彈幕等操作。librtmp使用的是0.3.0,使用樹莓派noir官方攝像頭適配的。通過wireshark抓ffmpeg的包一點點改動,最終可以在red5和斗魚上推流了。沒怎么寫過python,有不恰當的地方請包涵。上代碼:#--coding:utf-8--#http://blog.csdn.net/luhangleiimportpicameraimporttimeimporttraceback
系統 2019-09-27 17:47:12 1882
本文所述實例為Python處理文本文件并生成指定格式文件的方法,具體實現功能代碼如下所示:importosimportsysimportstring#以指定模式打開指定文件,獲取文件句柄defgetFileIns(filePath,model):print("打開文件")print(filePath)print(model)returnopen(filePath,model)#獲取需要處理的文件defgetProcFile(path):returnos.l
系統 2019-09-27 17:47:04 1882
url組成:協議域名端口(如果url里面沒有端口,那么采用默認端口)文件路徑文件名參數錨點HTTP:超文本傳輸協議端口:80工作原理:請求響應模型無連接無狀態http請求包含哪些內容請求行(請求方法[get、post]url協議版本)請求頭(每個參數以鍵值對形式存在)空行請求數據(請求參數)請求頭參數1、user-agent:請求發起者的身份信息User-Agent:Mozilla/5.0(WindowsNT6.1;Win64;x64)AppleWebKi
系統 2019-09-27 17:46:58 1882
Python進行Redis數據遷移由于開發時的誤操作,導致redis數據損壞,所以需要進行redis的數據遷移,網上大佬的教程基本都是需要下載附加工具,亦或是需要一些復雜的操作,個人覺得麻煩還不如寫個腳本來的經濟實惠。#-*-coding:utf-8-*-fromredisimportStrictRedis"""redis是用于操作Redis的第三方庫,StrictRedis是官方推薦的方法,而且Redis是它的子類,Redis能做到的StrictRedi
系統 2019-09-27 17:46:53 1882
本文以實例形式講述了python3編寫C/S網絡程序的實現方法。具體方法如下:本文所述實例是根據wingIDE的提示編寫的一個C/S小程序,具體代碼如下:client端myclient.py代碼如下:#!/bin/envpython#-*-coding:gb18030-*-#importsocketimporttimei=1whilei<10:address=("127.0.0.1",3138)s=socket.socket(socket.AF_INET,
系統 2019-09-27 17:46:04 1882
python文件部分:user={'username':None}shopping_trolley={}shopping_num=[0]money=[0]my_money=[0]#獲取商品列表defget_goods_list():withopen('shopping.txt',encoding='utf-8')asfr:shopping_dic=eval(fr.read())returnshopping_dicshopping_dic=get_goods
系統 2019-09-27 17:45:36 1882
背景:有一個爬蟲服務,需要定時從公開網站上拉取一些數據,為了避免被識別為爬蟲(防爬蟲的識別需要根據很多特征,時間僅僅是其中一個維度),需要在指定的時間內,隨機生成一個時間爬取腳本是python寫的,直接上代碼...importloggingimporttracebackfromdatetimeimportdatetimefromapscheduler.schedulers.backgroundimportBackgroundSchedulerschedul
系統 2019-09-27 17:45:32 1882
Pythonsocket網絡編程初學python,前段時間買了兩本書《python編程從入門到實踐》《Python核心編程第三版》,第一本書主要講的是一些基本語法和一些基本的使用方法,而第二本則深入很多,自己看來也是一知半解,剛好看到了這部分網絡編程,依然有好多不太理解的地方,不過想來通過自己不斷的摸索,不斷地搜尋資料學習,早晚應該會變得通透吧.......這部分主要使用的模塊就是socket模塊,在這個模塊中可以找到socket()函數,該函數用于創建套
系統 2019-09-27 17:38:34 1882
心血來潮寫了個多線程抓妹子圖,雖然代碼還是有一些瑕疵,但是還是記錄下來,分享給大家。Pic_downloader.py#-*-coding:utf-8-*-"""CreatedonFriAug0717:30:582015@author:Dreace"""importurllib2importsysimporttimeimportosimportrandomfrommultiprocessing.dummyimportPoolasThreadPooltype
系統 2019-09-27 17:38:32 1882
hasattr(object,name)作用:判斷對象object是否包含名為name的特性(hasattr是通過調用getattr(ojbect,name)是否拋出異常來實現的)。示例:>>>hasattr(list,'append')True>>>hasattr(list,'add')Falsegetattr(object,name,default):作用:返回object的名稱為name的屬性的屬性值,如果屬性name存在,則直接返回其屬性值;如果屬
系統 2019-09-27 17:38:20 1882
我們都知道并發(不是并行)編程目前有四種方式,多進程,多線程,異步,和協程。多進程編程在python中有類似C的os.fork,當然還有更高層封裝的multiprocessing標準庫,在之前寫過的python高可用程序設計方法中提供了類似nginx中masterprocess和workerprocess間信號處理的方式,保證了業務進程的退出可以被主進程感知。多線程編程python中有Thread和threading,在linux下所謂的線程,實際上是LW
系統 2019-09-27 17:38:17 1882
JSON編碼支持的基本數據類型為None,bool,int,float和str,以及包含這些類型數據的lists,tuples和dictionaries。對于dictionaries,keys需要是字符串類型(字典中任何非字符串類型的key在編碼時會先轉換為字符串)。為了遵循JSON規范,你應該只編碼Python的lists和dictionaries。而且,在web應用程序中,頂層對象被編碼為一個字典是一個標準做法。JSON編碼的格式對于Python語法而
系統 2019-09-27 17:38:14 1882