1. 程式人生 > >Python實用工具介紹

Python實用工具介紹

1. Socket通訊

server:

#coding:utf-8
from socket import *
from time import ctime
 
host = ''  #繫結的ip
port = 21567 #繫結的埠
addr = (host,port)
 
#套接字與連線協議,這裡是tcp,socket.SOCK_DGRAM是udp.
tcpSerSock = socket(AF_INET,SOCK_STREAM)
tcpSerSock.bind(addr)
tcpSerSock.listen(5)
 
while True:
        print'waiting for connetion....'
     #等待接收客戶端請求,返回新的套接字與IP地址
       connection,addr = tcpSerSock.accept()
        print'...connetion from :',addr
 
        whileTrue:
           #
               data = connection.recv(1024)
               if not data:
                       break
               s = 'say'
               t = ctime()
               #print addr,s,data
               #sdata =  'servicer say on'
               print addr,t,s,data
               sdata = raw_input('> ')
               cdata = 'sorry,I am so busy'
               if sdata:
#                      connection.send(sdata)
                       connection.send('[%s] %s'% (ctime(),sdata))
               else:
                       connection.send('[%s] %s'% (ctime(),cdata))

client:

from socket import *
 
host = '127.0.0.1' #server add
port = 21567
BUFSIZ = 1024
addr = (host,port)
 
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(addr)
 
while True:
    data =raw_input('> ')
    if not data:
        break
   tcpCliSock.send(data)
    data =tcpCliSock.recv(BUFSIZ)
    if not data:
        break
 
    print data
 
tcpCliSock.close()

另 socket模組的其他用法: 

import socket

#獲得主機名

socket.gethost()

#解析域名的ip地址

socet.gethostbyname(‘www.baidu.com’)

2. PIL庫使用

import Image

# 開啟一個jpg影象檔案,注意路徑要改成你自己的:
im = Image.open('/Users/iphone/Pictures/qiao.jpg')
# 獲得影象尺寸:
w, h = im.size
# 縮放到50%:
im.thumbnail((w//2, h//2))
# 把縮放後的影象用jpeg格式儲存:
im.save('/Users/iphone/Pictures/qiao1.jpg','jpeg')
其他功能如切片、旋轉、濾鏡、輸出文字、調色盤等一應俱全。
比如,模糊效果也只需幾行程式碼:import Image, ImageFilter
im = Image.open('/Users/iphone/Pictures/qiao.jpg')
im2 = im.filter(ImageFilter.BLUR)im2.save('/Users/iphone/Pictures/qiao2.jpg','jpeg')

示例是一個生成圖片驗證碼的程式:

#encoding=utf-8
import Image, ImageDraw, ImageFont, ImageFilter
import random
 
# 隨機字母:
def rndChar():
    returnchr(random.randint(65, 90))
 
# 隨機顏色1:
def rndColor():
    return(random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))
 
# 隨機顏色2:
def rndColor2():
    return(random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))
 
# 240 x 60:
width = 60 * 4
height = 60
image = Image.new('RGB', (width, height), (255, 255,255))
# 建立Font物件:
font = ImageFont.truetype('/Library/Fonts/Arial.ttf',36)
# 建立Draw物件:
draw = ImageDraw.Draw(image)
# 填充每個畫素:
for x in range(width):
    for y inrange(height):
       draw.point((x, y), fill=rndColor())
# 輸出文字:
for t in range(4):
   draw.text((60 * t + 10, 10), rndChar(), font=font, fill=rndColor2())
# 模糊:
image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg');
image.show('code.jpg')

3. python 命令列程式除錯工具,取代傳統的print列印,使用模組pdb.

用pdb除錯有多種方式可選:

1)  命令列啟動目標程式,加上-m引數,這樣呼叫myscript.py的話斷點就是程式的執行第一行之前

python -m pdb code.py(程式名)

2)  比較常用的,就是在程式中間插入一段程式,相對於在一般IDE裡面打上斷點然後啟動debug,不過這種方式是hardcode的

for x in range(width):

    for y inrange(height):

        importpdb

       pdb.set_trace()

        x =str(x) + y

       draw.point((x, y), fill=rndColor())

然後正常執行指令碼,到了pdb.set_trace()那就會定下來,就可以看到除錯的提示符(Pdb)了。

引數介紹:

1)b(reak), 設定斷點,例如 “b 77″,就是在當前指令碼的77行打上斷點,還能輸入函式名作為引數,斷點就打到具體的函式入口,如果只敲b,會顯示現有的全部斷點

2)condition bpnumber [condition],設定條件斷點,下面語句就是對第4個斷點加上條件“a==3”

(Pdb) condition 4 a==3

3)cl(ear),如果後面帶有引數,就是清除指定的斷點;如果不帶引數就是清除所有的斷點

(Pdb) b

Num Type        Disp Enb   Where

4  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:11

5  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:15

(Pdb) cl 4

Deleted breakpoint 4

(Pdb) b

Num Type        Disp Enb   Where

5  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:15

4)disable/enable,禁用/啟用斷點

(Pdb) disable 15

No breakpoint numbered 15

(Pdb) disable 5

(Pdb) b

Num Type        Disp Enb   Where

5   breakpoint   keep no   at /Users/iphone/git/yys-test/code.py:15

6  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:7

7  breakpoint   keep yes   at /Users/iphone/git/yys-test/code.py:11

5)其他一些指令引數

n(ext),讓程式執行下一行,如果當前語句有一個函式呼叫,用n是不會進入被呼叫的函式體中的

s(tep),跟n相似,但是如果當前有一個函式呼叫,那麼s會進入被呼叫的函式體中

c(ont(inue)),讓程式正常執行,直到遇到斷點

j(ump),讓程式跳轉到指定的行數

p,最有用的命令之一,列印某個變數

3. 時間轉化與格式化

 importtime,datetime

#time 轉為字串形式

 printtime.strftime("%Y-%m-%d %X", time.localtime())

#字串轉為time形式

 t =time.strptime("2016 - 08 - 08", "%Y - %m - %d")

#將整數按年,月,日,時, 分, 秒的形式轉為datetime型別

 d =datetime.datetime(2016,8,29,10,10,10)

符:

%a 英文星期簡寫

%A 英文星期的完全

%b 英文月份的簡寫

%B 英文月份的完全

%c 顯示本地日期時間

%d 日期,取1-31

%H 小時, 0-23

%I 小時, 0-12

%m 月, 01 -12

%M 分鐘,1-59

%j 年中當天的天數

%w 顯示今天是星期幾

%W 第幾周

%x 當天日期

%X 本地的當天時間

%y 年份 00-99間

%Y 年份的完整拼寫

4. 常用的python內建函式.

1)刪減

T2.lstrip()移除字串前面字元(預設空格),返回字串

T2.rstrip()移除字串後面字元(預設空格),返回字串

T2.strip()移除字串前後面空格,返回字串預設空格,可以其他字元 S.strip('"')

2)切割

split([sep[,maxsplit]]),

#sep為分隔符,把S分成一個listmaxsplit表示分割的次數。預設的分割符為空白字元

rsplit([sep[,maxsplit]])#從右到左切割

3)變形

lower(),#全部小寫

upper(),#全部小寫

capitalize(),#首字母大寫

swapcase(),#大小寫交換

capwords(s)#每個單詞第一個大寫,其他小寫

4)連線

join(seq)

join()  #它的功用是將可迭代的字串序列連線成一條長字串,如:

a= {‘a’:1, ‘b’:2, ‘c’:3}

b= ‘;’.join(‘%s=%s’%(k,v) for k,v in a.items())

printb

‘a=1;b=2;c=3’

5)查詢

count(sub[, start[, end]]),#計算subS中出現的次數

find(sub[, start[, end]]),#返回S中出現sub的第一個字母的標號,如果S中沒有sub則返回-1

index(substr[, start[, end]]),#find()相同,只是在S中沒有substr時,會返回一個執行時錯誤

find()----找到的第一個符合字元的index

rfind()-----找到最後一個符合的字元的index

備註:

find()函式族找不到時返回-1index()函式族則丟擲ValueError異常。

另,也可以用in not in操作符來判斷字串中是否存在某個模板

6)刪除列表裡的元素

L= [2,3]

pop()  #預設刪除列表裡的最後一個元素

L.pop()

[2]

delL[1] #表示刪除列表L裡的第二個元素

[2]

L.remove(3)#刪除列表L裡的某個值

[2]

相關推薦

Python實用工具介紹

1. Socket通訊 server: #coding:utf-8 from socket import * from time import ctime host = '' #繫結的ip port = 21567 #繫結的埠 addr = (host,port)

python實用工具介紹

developer 交互式 tp服務器 引擎 pam 人類 edi 答案 import語句 一、秒級啟動一個HTTP下載服務器在實際工作中,時不時會有這樣的一個需求:將文件傳給其他同事。將文件傳給同事本身並不是一個很繁瑣的工作,現在的聊天工具一般都支持文件傳輸。但是,如果需

Python 構建工具 buildout 的介紹與使用

gunicorn tool 執行 參考 目的 bsp 速度 extend .cn 來到了新公司上班,首先就是得把自己的環境給搭起來。知乎使用了buildout作為python項目的構建工具。 那麽什麽是 buildout ? buildout的是一款自動化構建工具。由Zo

python使用工具簡介介紹

ins 包管理 同時 char project arm 研究生 python3 inter 我從研究生開學以來就開始在學python,現在來簡單分享下一些基本的使用命令和快捷方式 Pycharm: 運行程序 ctrl+alt+F10 刪除一行ctrl+D 註釋ctrl+/

《selenium2 python 自動化測試實戰》(20)——Selenium工具介紹

命令 aic 插件 rhui 所有 key 框架 地址欄 uga (一)Selenium IDE Firefox的一個插件,有助於我們理解測試框架。在附加組件裏搜索下載,一般搜的結果裏前幾個都不是,得點那個查看更多才行,找到這個: 安裝以後瀏覽器工具欄會有

Python開發環境和工具介紹

(教程以Python3.x來講解) 一、安裝開發環境 1) Windows下開發環境 Windows系統沒有內建Python語言的執行環境,需要到官網下載安裝。https://www.python.org/ Python官網下載 安裝開啟 cmd , 鍵入 python 命令看

Python中的命令列解析工具介紹

轉自新浪微博:@孔令賢HW; ++++++++++++++++++++++ sys.argv 最簡單、最原始的方法就是手動解析了。 import sysdefTestSys():for arg in sys.argv[1:]:print(arg) getopt

[python實用工具]python解壓zip檔案

使用python解壓zip檔案,帶密碼或者不帶密碼都可行,適合批量解壓時使用 # @Date : 2018-08-31 14:45:58 # @Author : Jimy_Fengqi ([e

Python開源專案介紹:網站日誌分析工具

CodingGo技術社群自由的程式設計學習平臺 日誌分析 日誌分析在web系統中故障排查、效能分析方面有著非常重要的作用。該工具的側重點不是通常的PV,UV等展示,而是在指定時間段內提供細粒度(最小分鐘級別,即一分鐘內的日誌做抽象和彙總)的異常定位和效能分析。 環境安裝

Python開發工具的七種“工具”的介紹

Python是我們常有的計算機語言,而在Python開發工具中卻很少有人知道 Python開發工具中的七種“工具”以下就是幾種 Python開發工具的具體介紹,希望你在瀏覽之後會有所收穫。 Python開發工具介紹。 1 IDLE IDLE是python創初人Guido va

實用工具---python執行環境部署

主要解決的問題: 1、伺服器上的python版本較老,直接升級或安裝一些庫不知道會不會對其他人員的開發和應用產生影響,因而需要一些獨立的python執行環境,如何建立這樣的環境? 2、像編寫spark應用時,如果需要載入一些庫或自己編寫的類,這個時候就需要將相關

介紹一個監測程式碼效能的實用工具

   記得是去年四月份,領導安排的一個任務,商城上線秒殺活動,因為用的市面上開源的系統,在快取方面並沒有做過多處理,自然第一次活動就壯烈了,活動12點開啟,伺服器直接宕機,重啟三次才勉強撐完整個活動,

【敏捷實用工具】JIRA介紹以及使用方法

敏捷開發並不是由敏捷工具來推動的。但是沒有敏捷工具的支援,就很難進行各種軟體工程的相關事件,工具的作用是約束和流程,正確使用敏捷工具可以事半功倍,實踐敏捷。近幾年來敏捷開發催生大量敏捷工具的產生,在敏捷工具上多了很多種選擇,每個團隊需求不一樣,就會使用到不同的敏捷工具。  

python接口自動化(四)--接口測試工具介紹(詳解) (轉載)

service 測試工具 平臺 如果 網上 是不是 client 環境 一個 簡介   “工欲善其事必先利其器”,通過前邊幾篇文章的介紹,大家大致對接口有了進一步的認識。那麽接下來讓我們看看接口測試的工具有哪些。 目前,市場上有很多支持接口測試的工

非同步載入css 和 谷歌瀏覽器各實用工具介紹

非同步載入css資源 加開頁面首屏顯示速度使我們前端一直在追求的目標,而css資源在這些優化中同樣也是不可或缺的。 一個網站可能有一部分css資源是必須的,他需要在頁面渲染完之前就被載入完,並和html一起解析,這個暫時無法做手腳,但是我們可以把一些非關鍵的css進行非同步化,也就是非同步載入。 市面上有很多

轉://Oracle補丁及opatch工具介紹

獨立 管理所 無效對象 rim 計劃 目錄 conn 技術 有時 一. CPU(Critical Patch Update) 一個CPU內包含了對多個安全漏洞的修復,並且也包括相應必需的非安全漏洞的補丁。CPU是累積型的,只要安裝最新發布的CPU即可,其中包括之前

022day--python 模塊介紹和time模塊

字符串 命令行 strong __main__ rand time 5-0 可維護 .com 一、模塊的含義   在計算機程序的開發過程中,隨著程序代碼越寫越多,在一個文件裏代碼就會越來越長,越來越不容易維護。   為了編寫可維護的代碼,我們把很多函數分組,分別放到不同的文

python工具:用python操作HP的Quality Center

over cti 步驟 response headers 服務器 登錄 chm format 背景是這樣的:這個組的測試人員每跑一個case都要上傳測試結果附件到QC。每個待測功能模塊可能包含幾十上百的case。於是手工上傳測試結果變成了繁重的體力勞動。令人驚訝的是我們的工

實用工具mycli:MySQL、MariaDB 和 Percona 的命令行界面

mysqlmycli 是默認的 MySQL 客戶端的現代替代品,mycli 將在你輸入時自動補全關鍵字、表名、列和函數。HomePage: http://mycli.net 使用效果如下:RHEL, Centos安裝方式: 目前作者沒有針對RHEL, Centos提供RPM包,暫時可用pip方式

python工具 - alert彈框輸出姓名年齡、求和

sum entry 數字 之間 col import 技術分享 app button 使用python自帶的tkinter庫進行GUI編程,完成兩個功能: (1)要求用戶輸入姓名和年齡然後打印出來 (2)要求用戶輸入一個數字,然後計算1到該數字之間的和 代碼部分: # 導