Python基礎(chǔ)知識記錄

一啃沪、Python數(shù)據(jù)類型轉(zhuǎn)換

函數(shù) 描述
int(x [,base]) 將x轉(zhuǎn)換為一個整數(shù)
long(x [,base] ) 將x轉(zhuǎn)換為一個長整數(shù)
float(x) 將x轉(zhuǎn)換到一個浮點數(shù)
complex(real [,imag]) 創(chuàng)建一個復(fù)數(shù)
str(x) 將對象 x 轉(zhuǎn)換為字符串
repr(x) 將對象 x 轉(zhuǎn)換為表達式字符串
eval(str) 用來計算在字符串中的有效Python表達式,并返回一個對象
tuple(s) 將序列 s 轉(zhuǎn)換為一個元組
list(s) 將序列 s 轉(zhuǎn)換為一個列表
set(s) 轉(zhuǎn)換為可變集合
dict(d) 創(chuàng)建一個字典。d 必須是一個序列 (key,value)元組歇盼。
frozenset(s) 轉(zhuǎn)換為不可變集合
chr(x) 將一個整數(shù)轉(zhuǎn)換為一個字符
unichr(x) 將一個整數(shù)轉(zhuǎn)換為Unicode字符
ord(x) 將一個字符轉(zhuǎn)換為它的整數(shù)值
hex(x) 將一個整數(shù)轉(zhuǎn)換為一個十六進制字符串
oct(x) 將一個整數(shù)轉(zhuǎn)換為一個八進制字符串

二、Python隨機數(shù)函數(shù)

需要導(dǎo)入 random

import random
函數(shù) 描述
choice(seq) 從序列的元素中隨機挑選一個元素藕施,比如random.choice(range(10))弹灭,從0到9中隨機挑選一個整數(shù)毁靶。
randrange ([start,] stop [,step]) 從指定范圍內(nèi),按指定基數(shù)遞增的集合中獲取一個隨機數(shù)蛮位,基數(shù)默認值為 1
random() 隨機生成下一個實數(shù)较沪,它在[0,1)范圍內(nèi)鳞绕。
seed([x]) 改變隨機數(shù)生成器的種子seed。如果你不了解其原理尸曼,你不必特別去設(shè)定seed们何,Python會幫你選擇seed。
shuffle(lst) 將序列的所有元素隨機排序
uniform(x, y) 隨機生成下一個實數(shù)控轿,它在[x,y]范圍內(nèi)冤竹。

三镀迂、Python轉(zhuǎn)義字符

轉(zhuǎn)義字符 描述
\ (在行尾時) 續(xù)行符
\\ 反斜杠符號
\' 單引號
\" 雙引號
\a 響鈴
\b 退格(Backspace)
\e 轉(zhuǎn)義
\000
\n 換行
\v 縱向制表符
\t 橫向制表符
\r 回車
\f 換頁
\oyy 八進制數(shù)闸氮,yy 代表的字符,例如:\o12 代表換行
\xyy 十六進制數(shù)控汉,yy 代表的字符在抛,例如:\x0a 代表換行
\other 其它的字符以普通格式輸出

四钟病、數(shù)組

4.1 Python列表腳本操作符
Python 表達式 結(jié)果 描述
len([1, 2, 3]) 3 長度
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 組合
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重復(fù)
3 in [1, 2, 3] True 元素是否存在于列表中
for x in [1, 2, 3]: print x, 1 2 3 迭代
4.2 Python列表截取
Python 表達式 結(jié)果 描述
L[2] 'Taobao' 讀取列表中第三個元素
L[-2] 'Runoob' 讀取列表中倒數(shù)第二個元素
L[1:] ['Runoob', 'Taobao'] 從第二個元素開始截取列表
4.3 Python列表函數(shù)&方法
序號 函數(shù)
1 cmp(list1, list2) 比較兩個列表的元素
2 len(list) 列表元素個數(shù)
3 max(list) 返回列表元素最大值
4 min(list) 返回列表元素最小值
5 list(seq) 將元組轉(zhuǎn)換為列表
序號 方法
1 list.append(obj) 在列表末尾添加新的對象
2 list.count(obj) 統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)
3 list.extend(seq) 在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
4 list.index(obj) 從列表中找出某個值第一個匹配項的索引位置
5 list.insert(index, obj) 將對象插入列表
6 list.pop([index=-1]) 移除列表中的一個元素(默認最后一個元素),并且返回該元素的值
7 list.remove(obj) 移除列表中某個值的第一個匹配項
8 list.reverse() 反向列表中元素
9 list.sort(cmp=None, key=None, reverse=False) 對原列表進行排序

五霜定、字典

序號 函數(shù)及描述
1 dict.clear() 刪除字典內(nèi)所有元素
2 dict.copy() 返回一個字典的淺復(fù)制
3 dict.fromkeys(seq[, val]) 創(chuàng)建一個新字典档悠,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應(yīng)的初始值
4 dict.get(key, default=None) 返回指定鍵的值望浩,如果值不在字典中返回default值
5 dict.has_key(key) 如果鍵在字典dict里返回true辖所,否則返回false
6 dict.items() 以列表返回可遍歷的(鍵, 值) 元組數(shù)組
7 dict.keys() 以列表返回一個字典所有的鍵
8 dict.setdefault(key, default=None) 和get()類似, 但如果鍵不存在于字典中,將會添加鍵并將值設(shè)為default
9 dict.update(dict2) 把字典dict2的鍵/值對更新到dict里
10 dict.values() 以列表返回字典中的所有值
11 pop(key[,default]) 刪除字典給定鍵 key 所對應(yīng)的值磨德,返回值為被刪除的值缘回。key值必須給出。 否則典挑,返回default值酥宴。
12 popitem() 返回并刪除字典中的最后一對鍵和值。

六您觉、日期和時間

import time
import calendar

6.1 time 模塊
  • 獲取當前時間
ticks = time.time()
當前時間戳: 1599991315.920578
  • 本地時間
localtime = time.localtime(time.time())
本地時間: time.struct_time(tm_year=2020, tm_mon=9, tm_mday=13, tm_hour=18, tm_min=1, tm_sec=55, tm_wday=6, tm_yday=257, tm_isdst=0)
  • 獲取格式化的時間
localtime = time.asctime( time.localtime(time.time()) )
格式化時間: Sun Sep 13 18:04:21 2020
  • 格式化日期
符號 描述
%y 兩位數(shù)的年份表示(00-99)
%Y 四位數(shù)的年份表示(000-9999)
%m 月份(01-12)
%d 月內(nèi)中的一天(0-31)
%H 24小時制小時數(shù)(0-23)
%I 12小時制小時數(shù)(01-12)
%M 分鐘數(shù)(00-59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應(yīng)的日期表示和時間表示
%j 年內(nèi)的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(shù)(00-53)星期天為星期的開始
%w 星期(0-6)拙寡,星期天為星期的開始
%W 一年中的星期數(shù)(00-53)星期一為星期的開始
%x 本地相應(yīng)的日期表示
%X 本地相應(yīng)的時間表示
%Z 當前時區(qū)的名稱
%% %號本身

五、函數(shù)

可更改(mutable)與不可更改(immutable)對象
python 中琳水,strings, tuples, 和 numbers 是不可更改的對象肆糕,而 list, dict 等則是可以修改的對象。

  • 不可變類型:變量賦值 a=5 后再賦值 a=10在孝,這里實際是新生成一個 int 值對象 10诚啃,再讓 a 指向它,而 5 被丟棄私沮,不是改變 a 的值始赎,相當于新生成了 a

  • 可變類型:變量賦值 la=[1,2,3,4] 后再賦值 la[2]=5 則是將 list la 的第三個元素值更改,本身 la 沒有動造垛,只是其內(nèi)部的一部分值被修改了魔招。

python 函數(shù)的參數(shù)傳遞

  • 不可變類型:類似 c++ 的值傳遞,如 整數(shù)筋搏、字符串仆百、元組厕隧。如fun(a)奔脐,傳遞的只是 a 的值,沒有影響 a 對象本身吁讨。比如在 fun(a) 內(nèi)部修改 a 的值髓迎,只是修改另一個復(fù)制的對象,不會影響 a 本身建丧。

  • 可變類型:類似 c++ 的引用傳遞排龄,如 列表,字典翎朱。如 fun(la)橄维,則是將 la 真正的傳過去,修改后 fun 外部的 la 也會受影響

python 中一切都是對象拴曲,嚴格意義我們不能說值傳遞還是引用傳遞争舞,我們應(yīng)該說傳不可變對象和傳可變對象。

六澈灼、模塊

support.py 文件

supDic = {
    "name": "loongod",
    "age": 31,
    "weight": 120
}


def printPersonName(person):
    print("this person's name ", person)
    return
6.1 import

當解釋器遇到 import 語句竞川,如果模塊在當前的搜索路徑就會被導(dǎo)入。

搜索路徑是一個解釋器會先進行搜索的所有目錄的列表叁熔。如想要導(dǎo)入模塊 support.py委乌,需要把命令放在腳本的頂端:

# 導(dǎo)入模塊
import support
 
# 現(xiàn)在可以調(diào)用模塊里包含的函數(shù)了
support.printPersonName("Runoob")

一個模塊只會被導(dǎo)入一次,不管你執(zhí)行了多少次 import荣回。這樣可以防止導(dǎo)入模塊被一遍又一遍地執(zhí)行遭贸。

6.2 from…import 語句

Pythonfrom 語句讓你從模塊中導(dǎo)入一個指定的部分到當前命名空間中。語法如下:

from modname import name1[, name2[, ... nameN]]

例如心软,要導(dǎo)入模塊 supportprintPersonName 函數(shù)壕吹,使用如下語句:

from support import printPersonName
// 調(diào)用如下
printPersonName('loongod')

這個聲明不會把整個 support 模塊導(dǎo)入到當前的命名空間中,它只會將 support 里的 printPersonName 單個引入到執(zhí)行這個聲明的模塊的全局符號表糯累。

6.3 from…import* 語句

把一個模塊的 所有內(nèi)容全都導(dǎo)入 到當前的命名空間也是可行的算利,只需使用如下聲明:

from modname import *

這提供了一個簡單的方法來導(dǎo)入一個模塊中的所有項目。然而這種聲明不該被過多地使用泳姐。

例如我們想一次性引入 math 模塊中所有的東西效拭,語句如下:

from math import *
6.4 搜索路徑

當你導(dǎo)入一個模塊,Python 解析器對模塊位置的搜索順序是:

  1. 當前目錄
  2. 如果不在當前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每個目錄缎患。
  3. 如果都找不到慕的,Python 會察看默認路徑。UNIX下挤渔,默認路徑一般 為 /usr/local/lib/python/肮街。

模塊搜索路徑存儲在 system 模塊的 sys.path 變量中。變量里包含當前目錄判导,PYTHONPATH和由安裝過程決定的默認目錄嫉父。

七、文件 I/O

  • input([prompt]) :標準輸入讀入一行文本眼刃,默認的標準輸入是鍵盤
7.1 打開和關(guān)閉文件

** open 函數(shù) **

你必須先用Python內(nèi)置的open()函數(shù)打開一個文件绕辖,創(chuàng)建一個file對象,相關(guān)的方法才可以調(diào)用它進行讀寫擂红。

語法:file object = open(file_name [, access_mode][, buffering])

各個參數(shù)的細節(jié)如下:

  • file_name :file_name變量是一個包含了你要訪問的文件名稱的字符串值仪际。
  • access_mode :access_mode決定了打開文件的模式:只讀,寫入昵骤,追加等树碱。所有可取值見如下的完全列表。這個參數(shù)是非強制的变秦,默認文件訪問模式為只讀(r)成榜。
  • buffering : 如果buffering的值被設(shè)為0,就不會有寄存伴栓。如果buffering的值取1伦连,訪問文件時會寄存行。如果將buffering的值設(shè)為大于1的整數(shù)钳垮,表明了這就是的寄存區(qū)的緩沖大小惑淳。如果取負值,寄存區(qū)的緩沖大小則為系統(tǒng)默認饺窿。
模式 描述
t 文本模式 (默認)歧焦。
x 寫模式,新建一個文件肚医,如果該文件已存在則會報錯绢馍。
b 二進制模式。
+ 打開一個文件進行更新(可讀可寫)肠套。
U 通用換行模式(不推薦)舰涌。
r 以只讀方式打開文件。文件的指針將會放在文件的開頭你稚。這是默認模式瓷耙。
rb 以二進制格式打開一個文件用于只讀朱躺。文件指針將會放在文件的開頭。這是默認模式搁痛。一般用于非文本文件如圖片等长搀。
r+ 打開一個文件用于讀寫。文件指針將會放在文件的開頭鸡典。
rb+ 以二進制格式打開一個文件用于讀寫源请。文件指針將會放在文件的開頭。一般用于非文本文件如圖片等彻况。
w 打開一個文件只用于寫入谁尸。如果該文件已存在則打開文件,并從開頭開始編輯疗垛,即原有內(nèi)容會被刪除症汹。如果該文件不存在,創(chuàng)建新文件贷腕。
wb 以二進制格式打開一個文件只用于寫入。如果該文件已存在則打開文件咬展,并從開頭開始編輯泽裳,即原有內(nèi)容會被刪除。如果該文件不存在破婆,創(chuàng)建新文件涮总。一般用于非文本文件如圖片等。
w+ 打開一個文件用于讀寫祷舀。如果該文件已存在則打開文件瀑梗,并從開頭開始編輯,即原有內(nèi)容會被刪除裳扯。如果該文件不存在抛丽,創(chuàng)建新文件。
wb+ 以二進制格式打開一個文件用于讀寫饰豺。如果該文件已存在則打開文件亿鲜,并從開頭開始編輯,即原有內(nèi)容會被刪除冤吨。如果該文件不存在蒿柳,創(chuàng)建新文件。一般用于非文本文件如圖片等漩蟆。
a 打開一個文件用于追加垒探。如果該文件已存在,文件指針將會放在文件的結(jié)尾怠李。也就是說圾叼,新的內(nèi)容將會被寫入到已有內(nèi)容之后仔引。如果該文件不存在,創(chuàng)建新文件進行寫入褐奥。
ab 以二進制格式打開一個文件用于追加咖耘。如果該文件已存在,文件指針將會放在文件的結(jié)尾撬码。也就是說儿倒,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在呜笑,創(chuàng)建新文件進行寫入夫否。
a+ 打開一個文件用于讀寫。如果該文件已存在叫胁,文件指針將會放在文件的結(jié)尾凰慈。文件打開時會是追加模式。如果該文件不存在驼鹅,創(chuàng)建新文件用于讀寫微谓。
ab+ 以二進制格式打開一個文件用于追加。如果該文件已存在输钩,文件指針將會放在文件的結(jié)尾豺型。如果該文件不存在,創(chuàng)建新文件用于讀寫买乃。

下圖很好的總結(jié)了這幾種模式:

image
模式 r r+ w w+ a a+
+ + + +
+ + + + +
創(chuàng)建 + + + +
覆蓋 + +
指針在開始 + + + +
指針在結(jié)尾 + +

read() 方法從一個打開的文件中讀取一個字符串姻氨。需要重點注意的是,Python字符串可以是二進制數(shù)據(jù)剪验,而不是僅僅是文字肴焊。

fileObject.read([count])

在這里,被傳遞的參數(shù)是要從已打開文件中讀取的字節(jié)計數(shù)功戚。該方法從文件的開頭開始讀入娶眷,如果沒有傳入count,它會嘗試盡可能多地讀取更多的內(nèi)容疫铜,很可能是直到文件的末尾茂浮。

close() 方法:

當一個文件對象的引用被重新指定給另一個文件時,Python 會關(guān)閉之前的文件壳咕。用 close()方法關(guān)閉文件是一個很好的習(xí)慣席揽。

tell() 方法告訴你文件內(nèi)的當前位置, 換句話說,下一次的讀寫會發(fā)生在文件開頭這么多字節(jié)之后谓厘。

seek(offset [,from]) 方法改變當前文件的位置幌羞。Offset變量表示要移動的字節(jié)數(shù)。From變量指定開始移動字節(jié)的參考位置竟稳。

如果from被設(shè)為0属桦,這意味著將文件的開頭作為移動字節(jié)的參考位置熊痴。如果設(shè)為1,則使用當前的位置作為參考位置聂宾。如果它被設(shè)為2果善,那么該文件的末尾將作為參考位置。

# 打開一個文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print "讀取的字符串是 : ", str
 
# 查找當前位置
position = fo.tell()
print "當前文件位置 : ", position
 
# 把指針再次重新定位到文件開頭
position = fo.seek(0, 0)
str = fo.read(10)
print "重新讀取字符串 : ", str
# 關(guān)閉打開的文件
fo.close()
7.2 File 對象的屬性

一個文件被打開后系谐,你有一個file對象巾陕,你可以得到有關(guān)該文件的各種信息。
以下是和file對象相關(guān)的所有屬性的列表:

屬性 描述
file.closed 返回true如果文件已被關(guān)閉纪他,否則返回false鄙煤。
file.mode 返回被打開文件的訪問模式。
file.name 返回文件的名稱茶袒。
file.softspace 如果用print輸出后梯刚,必須跟一個空格符,則返回false薪寓。否則返回true亡资。

file 方法

序號 方法及描述
1 file.close()關(guān)閉文件。關(guān)閉后文件不能再進行讀寫操作预愤。
2 file.flush()刷新文件內(nèi)部緩沖沟于,直接把內(nèi)部緩沖區(qū)的數(shù)據(jù)立刻寫入文件, 而不是被動的等待輸出緩沖區(qū)寫入。
3 file.fileno()返回一個整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上植康。
4 file.isatty()如果文件連接到一個終端設(shè)備返回 True,否則返回 False展懈。
5 file.next()返回文件下一行销睁。
6 file.read([size])從文件讀取指定的字節(jié)數(shù),如果未給定或為負則讀取所有存崖。
7 file.readline([size])讀取整行冻记,包括 "\n" 字符。
8 file.readlines([sizeint])讀取所有行并返回列表来惧,若給定sizeint>0冗栗,則是設(shè)置一次讀多少字節(jié),這是為了減輕讀取壓力供搀。
9 file.seek(offset[, whence])設(shè)置文件當前位置
10 file.tell()返回文件當前位置隅居。
11 file.truncate([size])截取文件,截取的字節(jié)通過size指定葛虐,默認為當前文件位置胎源。
12 file.write(str)將字符串寫入文件,返回的是寫入的字符長度屿脐。
13 file.writelines(sequence)向文件寫入一個序列字符串列表涕蚤,如果需要換行則要自己加入每行的換行符宪卿。
7.3 重命名和刪除文件

Python的os模塊提供了幫你執(zhí)行文件處理操作的方法,比如重命名和刪除文件万栅。
要使用這個模塊佑钾,你必須先導(dǎo)入它,然后才可以調(diào)用相關(guān)的各種功能烦粒。
rename()方法:
rename()方法需要兩個參數(shù)休溶,當前的文件名和新文件名。

語法:os.rename(current_file_name, new_file_name)

import os
 
# 重命名文件test1.txt到test2.txt撒遣。
os.rename( "test1.txt", "test2.txt" )

remove()方法, 你可以用remove()方法刪除文件邮偎,需要提供要刪除的文件名作為參數(shù)。

語法:os.remove(file_name)

import os
 
# 刪除一個已經(jīng)存在的文件test2.txt
os.remove("test2.txt")
7.4 Python里的目錄

所有文件都包含在各個不同的目錄下义黎,不過Python也能輕松處理禾进。os模塊有許多方法能幫你創(chuàng)建,刪除和更改目錄廉涕。

函數(shù) 語法 解釋
mkdir() os.mkdir("newdir") 可以使用 os 模塊的 mkdir() 方法在當前目錄下創(chuàng)建新的目錄們泻云。你需要提供一個包含了要創(chuàng)建的目錄名稱的參數(shù)。
chdir() os.chdir("newdir") 可以用 chdir() 方法來改變當前的工作目錄狐蜕。像當與cdnewdir的目錄里面了宠纯,chdir() 方法需要的一個參數(shù)是你想設(shè)成當前目錄的目錄名稱。
getcwd() os.getcwd() 顯示當前的工作目錄
rmdir() os.rmdir('dirname') 刪除目錄层释,目錄名稱以參數(shù)傳遞婆瓜。在刪除這個目錄之前,它的所有內(nèi)容應(yīng)該先被清除贡羔。

八廉白、類

類的專有方法:

  1. __init__ : 構(gòu)造函數(shù),在生成對象時調(diào)用
  2. __del__ : 析構(gòu)函數(shù)乖寒,釋放對象時使用
  3. __repr__ : 打印猴蹂,轉(zhuǎn)換
  4. __setitem__ : 按照索引賦值
  5. __getitem__: 按照索引獲取值
  6. __len__: 獲得長度
  7. __cmp__: 比較運算
  8. __call__: 函數(shù)調(diào)用
  9. __add__: 加運算
  10. __sub__: 減運算
  11. __mul__: 乘運算
  12. __truediv__: 除運算
  13. __mod__: 求余運算
  14. __pow__: 乘方

九、Python3 標準庫概覽

9.1 os 模塊
>>> import  os
>>> os.getcwd()      # 獲取當前的工作目錄
'C:\\Python34'
>>> os.chdir('/server/accesslogs')   # 修改當前的工作目錄
>>> os.system('mkdir today')   # 執(zhí)行系統(tǒng)命令 mkdir 
9.2 shutil 模塊
>>> import shutil
>>> shutil.copyfile('data.db', 'archive.db')
>>> shutil.move('/build/executables', 'installdir')
9.3 文件通配符

glob模塊提供了一個函數(shù)用于從目錄通配符搜索中生成文件列表:

>>> import glob
>>> glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']
9.4 命令行參數(shù)

通用工具腳本經(jīng)常調(diào)用命令行參數(shù)楣嘁。這些命令行參數(shù)以鏈表形式存儲于 sys 模塊的 argv 變量磅轻。例如在命令行中執(zhí)行 "python demo.py one two three" 后可以得到以下輸出結(jié)果:

>>> import sys
>>> print(sys.argv)
['demo.py', 'one', 'two', 'three']

大多腳本的定向終止都使用 sys.exit()

9.5 字符串正則匹配

re模塊為高級字符串處理提供了正則表達式工具逐虚。對于復(fù)雜的匹配和處理聋溜,正則表達式提供了簡潔、優(yōu)化的解決方案:

>>> import re
>>> re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest')
['foot', 'fell', 'fastest']
>>> re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat')
'cat in the hat'
9.6 數(shù)學(xué)

math 模塊為浮點運算提供了對底層C函數(shù)庫的訪問:

>>> import math
>>> math.cos(math.pi / 4)
0.70710678118654757
>>> math.log(1024, 2)
10.0

random 提供了生成隨機數(shù)的工具痊班。

>>> import random
>>> random.choice(['apple', 'pear', 'banana'])
'apple'
>>> random.sample(range(100), 10)   # sampling without replacement
[30, 83, 16, 4, 8, 81, 41, 50, 18, 33]
>>> random.random()    # random float
0.17970987693706186
>>> random.randrange(6)    # random integer chosen from range(6)
4
9.7 訪問互聯(lián)網(wǎng)

有幾個模塊用于訪問互聯(lián)網(wǎng)以及處理網(wǎng)絡(luò)通信協(xié)議勤婚。其中最簡單的兩個是用于處理從 urls 接收的數(shù)據(jù)的 urllib.request 以及用于發(fā)送電子郵件的 smtplib:

>>> from urllib.request import urlopen
>>> for line in urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
...     line = line.decode('utf-8')  # Decoding the binary data to text.
...     if 'EST' in line or 'EDT' in line:  # look for Eastern Time
...         print(line)

<BR>Nov. 25, 09:43:32 PM EST

>>> import smtplib
>>> server = smtplib.SMTP('localhost')
>>> server.sendmail('soothsayer@example.org', 'jcaesar@example.org',
... """To: jcaesar@example.org
... From: soothsayer@example.org
...
... Beware the Ides of March.
... """)
>>> server.quit()

注意第二個例子需要本地有一個在運行的郵件服務(wù)器。

9.8 日期和時間

datetime模塊為日期和時間處理同時提供了簡單和復(fù)雜的方法涤伐。
支持日期和時間算法的同時馒胆,實現(xiàn)的重點放在更有效的處理和格式化輸出缨称。
該模塊還支持時區(qū)處理:

>>> # dates are easily constructed and formatted
>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2003, 12, 2)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'

>>> # dates support calendar arithmetic
>>> birthday = date(1964, 7, 31)
>>> age = now - birthday
>>> age.days
14368
9.9 數(shù)據(jù)壓縮

以下模塊直接支持通用的數(shù)據(jù)打包和壓縮格式:zlib,gzip祝迂,bz2睦尽,zipfile,以及 tarfile型雳。

>>> import zlib
>>> s = b'witch which has which witches wrist watch'
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
b'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末当凡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子纠俭,更是在濱河造成了極大的恐慌沿量,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冤荆,死亡現(xiàn)場離奇詭異朴则,居然都是意外死亡,警方通過查閱死者的電腦和手機钓简,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門乌妒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人外邓,你說我怎么就攤上這事撤蚊。” “怎么了损话?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵侦啸,是天一觀的道長。 經(jīng)常有香客問我丧枪,道長匹中,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任豪诲,我火速辦了婚禮,結(jié)果婚禮上挂绰,老公的妹妹穿的比我還像新娘屎篱。我一直安慰自己,他們只是感情好葵蒂,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布交播。 她就那樣靜靜地躺著,像睡著了一般践付。 火紅的嫁衣襯著肌膚如雪秦士。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天永高,我揣著相機與錄音隧土,去河邊找鬼提针。 笑死,一個胖子當著我的面吹牛曹傀,可吹牛的內(nèi)容都是我干的辐脖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼皆愉,長吁一口氣:“原來是場噩夢啊……” “哼嗜价!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幕庐,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤久锥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后异剥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑟由,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年届吁,在試婚紗的時候發(fā)現(xiàn)自己被綠了错妖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡疚沐,死狀恐怖暂氯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亮蛔,我是刑警寧澤痴施,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站究流,受9級特大地震影響辣吃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜芬探,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一神得、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧偷仿,春花似錦哩簿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至别智,卻和暖如春宗苍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工讳窟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留让歼,地道東北人。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓挪钓,卻偏偏與公主長得像是越,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子碌上,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349