1. 程式人生 > >讀《Python程式設計快速上手 讓繁瑣工作自動化》筆記

讀《Python程式設計快速上手 讓繁瑣工作自動化》筆記

以下資料依照《Python程式設計快速上手 讓繁瑣工作自動化》書寫。

1.關鍵字:

and                 elif                import              return
as                  else                in                  try
assert              except              is                  while
break               finally             lambda              with
class for not yield continue from or def global pass del if raise

2.操作符:

計算操作符:
** | 指數              |  2**3        |   8
%  | 取餘(取模)       |  22%8        |   6
// | 整除              |  22//8       |   2
/ | 除法 | 22/8 | 2.75 * | 乘法 | 3*5 | 15 - | 減法 | 5-2 | 3 + | 加法 | 2+2 | 4 優先順序:** -> * <-> / <-> // <-> % -> + <-> - 比較操作符: == | 等於 != | 不等於 < | 小於 > | 大於
<= | 小於等於 >= | 大於等於 二元操作符: and | 都為True時為True or | 有一個為True時為True not | 相反,True時為False,False時為True 賦值操作符: += | 加賦值 -= | 減賦值 *= | 乘賦值 /= | 除賦值 %= | 取模賦值 特殊操作符 \ | 續行符 轉義字元: \' | 單引號 \" | 雙引號 \t | 製表符 \n | 換行符 \\ | 倒斜槓 分類字元: \d | 0到9的任何數字 \D | 除0到9的數字以外的任何字元 \w | 任何字母、數字或下劃線 \W | 除字母、數字和下劃線以外的任何字元 \s | 空格、製表符或換行符 \S | 除空格、製表符和換行符以外的任何字元

3.整數、浮點型、字串資料型別

整數      |    -2,-1,0,1,5
浮點型    |    -1.25,0.0,4.30
字串    |    'a','Hello','b' 總是用單引號包圍住字串  
               字串連線符號 ‘+’ 如果連線資料為非字串格式,需要顯示的轉換為字串
               例:'Hello' + 'Word' 
               字串複製符號 ‘*’ *操作符在作用於整形或浮點型為乘法,在作用於字串時,則為字串複製操作 
               例:'Alice' * 5
布林值    |     TrueFalse
None     |     空值

4.賦值
格式:變數名 = 值
例:

spam = 40
str = 'Hello'

Python的變數是區分大小寫的。
變數在第一次進行賦值時,確定變數的型別
例:

spam = 40 整形
str = 'hello' 字串
f = 40.0 浮點型

5.註釋
Python 使用#作為註釋
Python使用""" .... """ 作為多行註釋

6.顯示轉換型別

str()       轉為字串
int()       轉為整數
float() 轉為浮點數  Tips:對浮點數取整,可以使用int()函式

7.流程控制語句
注意:Python 更加程式碼行的縮排,知道程式碼塊的開始和結束

格式:
if 條件 :
    語句塊
#------------
if 條件 :
    語句塊
else :
    語句塊
#-------------
if 條件 :
    語句塊
elif 條件 :
    語句塊

8.迴圈語句

while 語句:
while 條件 :
    語句塊

for 語句:
for 變數名 in range函式 :
    語句塊

tips:
range函式:
range(開始,停止,步長)

break語句 跳出迴圈
continue語句 跳出本次迴圈

9.匯入模組
格式:
import 模組名稱[,模組名稱...]
from 模組 import * #此方式可以呼叫模組中的函式時不需要random字首

10.函式

格式:
def 函式名(引數[,引數1,...]) :
    函式體

tips:
return語句    在函式體中使用return語句來執行返回值

11.作用域
分為區域性和全域性,一個變數必是其中一種。
區域性變數不能再全域性變數中使用,區域性變數可以使用全域性變數
global語句 在區域性作用域定義、修改全域性變數

12.異常處理

try:
    語句塊
except [異常型別]:
    語句塊

丟擲異常:raise Exception(異常資訊)

儲存錯誤資訊:
try:
    語句塊
except Exception as 變數:
    語句塊

traceback模組:
模組:improt traceback
traceback.format_exc()  得到異常的反向跟蹤字串

斷言:
格式:assert   條件,錯誤資訊
禁用斷言:執行Python程式時加上 -O 開關

13.資料結構
1)列表
定義:列表名 =[[值1,值2,...]]
獲取值:列表名[索引] #索引從0開始
多維列表:列表名 = [[值1,值2,..],[值1,值2,...]]
多維列表獲取值:列表名[索引][索引]
負數下標:-1列表最後一個,-2列表倒數第二個,依次類推
切片獲取列表:

列表名[結束下標]   #預設從0開始 不包含結束下標
列表名[開始下標:] #預設使用列表長度為結束下標
列表名[:結束下標]  #預設從零開始
列表名[開始下標:結束下標] #注意用: 不包含結束下標
列表名[開始下標:結束下標:增量] #以增量獲取數值

切片獲取列表:操作符+可以連線連個列表,得到新的列表
操作符*可以實現列表複製
刪除列表值:del 語句可以刪除列表下標處的值,格式del 列表名[索引]
值是否在列表中:in 和 not in 可以確定一個值是否在列表中,格式 值 in 列表 | 值 not in 列表
多重複制:格式 變數1,變數2[,變數3]} = 列表 #注意變數的資料必須與列表的長度相等

Tips:list 是引用型別
常用 方法:
len() 獲取列表的長度
index() 在列表中查詢值並返回下標
append() 在末尾新增值
insert() 在任意下標處插入值
remove() 從列表中刪除值
sort() 對列表進行排序

2)元組
定義:名 = ([值1,[值2,...]])
與list區別:
元組是不可變的,列表是可變的
Tips: 元祖只有一個值時,需要後面跟一個逗號

list() 可以轉換為list
tuple() 可以轉換為元組

Copy模組的copy()和deepcopy()方法:
copy() 複製一個列表或字典為新列表或字典,具有不同的引用地址
deepcopy() 如果列表或字典有子列表,使用此方法

3)字典
格式:名 = {鍵1:值1[,鍵2:值2,...]}
關鍵字in和not in,可以檢視鍵是否在字典中
方法:
keys() 獲取字典的鍵,返回列表
values() 獲取字典的值,返回列表
items() 獲取鍵值對
get(鍵,備用值) 根據鍵獲取值,如果值不存在返回備用值
setdefault(鍵,值) 根據鍵值設定預設資料,如果鍵不存在,則新增該鍵和值,如果存在則返回鍵的值

14.字串
格式:'字串' | "字串" #雙引號中可以使用單引號
原始字串:r"字串" #忽略所有轉義字元#
多行字串:'''字串''' #可以將字串在多行進行書寫
字串也可以使用下標和切片獲取值
in和not in 也適用於字串
常用方法:
upper() 轉為大寫
lower() 轉為小寫
isupper() 是否為大寫
islower() 是否為小寫
isalpha() 是否只包含字母,並且非空
isalnum() 是否只包含字母和數字,並且非空
isdecimal() 是否只包含數字,並且非空
isspace() 是否只包含空格、製表符和換行,並且非空
istitle() 是否為開頭大寫
startswith() 是否為某字串開頭
endswith() 是否我某字串結尾
join() 連線列表字串
split() 分割字串

rjust() 以特定字元前置填充字串
ljust() 以特定字元後置填充字串
center() 以特定字元居中填充字串

strip() 刪除兩邊邊空白字串(控制、製表符和換行符)
rstrip() 刪除右邊空白字串(控制、製表符和換行符)
lstrip() 刪除左邊空白字串(控制、製表符和換行符)

pyperclip模組:
copy() 向計算機的剪貼簿傳送文字
paste() 向計算機的剪貼簿接受文字

15.正則表示式
模組:import re
建立:名 = re.compile(格式)
匹配物件:
返回值 = 表示式.search(值) #返回第一次匹配的文字 返回match物件
返回值 = 表示式.search(值) #返回所有匹配的文字 返回元組列表
獲取返回值:返回值.group() #反回值不為null,返回實際匹配欄位
分組:(\d\d\d)-(\d\d\d\d) #使用括號可以對返回值分組
獲取分組:返回值.group(組下標) #下標從1開始 獲取所有組 使用 groups()方法
匹配管道:希望匹配許多表達式中的一個時,可以使用字元|進行分割
使用匹配符:
? 零次或一次
* 多次
+ 匹配一次或多次,至少出現一次
{} 匹配特定次數
[] 定義自己的字元分類
[^] 非自定義字元分類
^ 以某個字元開始
$ 以某個字元結尾
. 通配字元
.* 匹配所有字元

16.讀寫檔案
模組:要實現檔案讀取,需要引入os模組,import os

. 當前目錄
.. 父目錄
方法:
os.path.join() 生成檔案路徑,或連結檔名
os.getcwd() 獲取當前工作目錄
os.chdir() 修改當前工作目錄
os.makedirs() 建立新的目錄

os.path.abspath(path) 相對路徑轉決定路徑
os.path.isabs(path) 絕對路徑返回True,相對路徑返回False
os.path.relpath(path,start) 返回start路徑到path的相對路徑的字串,沒有提供start,就使用當前工作目錄作為開始路徑

os.path.dirname(path) 返回目錄路徑
os.path.basename(path) 返回檔名稱
os.path.split(path) 返回兩個字串的元組,包含路徑和檔名

os.path.getsize(path) 檢視檔案大小
os.listdir(path) 返回path下的所有檔名

os.path.exists(path) 檢測檔案或資料夾是否存在,可以檢測dvd或快閃記憶體盤當前是否連擊計算機
os.path.isfile(path) 檢測檔案是否存在
os.path.isdir(path) 檢測資料夾是否存在

os.unlink(path) 刪除path處的檔案
os.rmdir(path) 刪除path處的資料夾,該資料夾必須為空

os.walk() 遍歷目錄樹

open(path,開啟模式符) 開啟檔案,返回file物件,開啟模式為空,預設為只度
file.read() 讀取檔案內容
file.write() 寫入檔案
file.close() 關閉檔案

檔案開啟模式:
a 新增模式
r 只讀模式
w 寫入模式
wb 寫二進位制模式

sheleve 模組(感覺像是配置表)
模組:import shelve
方法:
shelve.open() 開啟檔案
shelve.keys() 獲取鍵
shelve.values() 獲取值

17.Shutil 模組
模組:import shutil

方法:
shutil.copy(path1,path2) 將path1的檔案複製到path2
shutil,copytree(path1,path2) 同copy,不一樣的是會複製整個資料夾
shutil.move(path1,path2) 將path1的檔案移動到path2
shutil.rmtree(path) 刪除path處的資料夾及子檔案

send2trash 模組
模組:import send2trash #此模組需要安裝
send2trash.send2trash(path) 將path的檔案移除到回收站

18.zipfile 壓縮模組
模組:import zipfile

方法:
zipfile.ZipFile(path) 開啟一個zip壓縮檔案
ZipFile.naelist() 返回zip檔案中包含的所有檔案和資料夾列表
ZipFile.getinfo() 返回一個特定檔案ZipInfo物件
ZipFile.extractall() 從zip檔案中解壓縮所有檔案和資料夾
ZipFile.write(path,壓縮型別) 會將路徑處的檔案寫入zip

19日誌:
模組:import logging
方法:
logging.debug(日誌資訊) 輸出日誌資訊
logging.disable(日誌級別) 禁止日誌

未完待續…