Python基本語法筆記
阿新 • • 發佈:2019-02-18
Python基本語法
@author 魯偉林
剛開始學習python,以前是一個java/c++黨。給出一份學習python時自己的筆記,方便自己回顧,也希望能給大家參考下。
學習python的網址是:http://www.runoob.com/python/python-object.html
gitHub地址: https://github.com/thinkingfioa/Notes/tree/master/python
Python是一種解釋型、面向物件、動態資料型別的高階程式設計語言。
Python語法的字尾名是以.py結尾,檔案開頭是: #!/usr/bin/python 或 #!/usr/bin/env python 如果支援中文,請改成: #!/usr/bin/python # -*- coding: UTF-8 -*-
Python 基礎語法
Python如何執行
- 1. 使用互動是介面執行。
- 2. 使用python test.py命令執行
- 3. 利用./test.py執行
Python 識別符號
- 1. 以單下劃線開頭的屬性,表示是類的私有屬性(包括方法,變數)。如:_foo表示不能直接訪問的類屬性。
- 2. 以雙下劃線開頭的 __foo 代表類的私有成員;
- 3. 以雙下劃線開頭和結尾的 _ _ foo _ _ 代表Python 裡特殊方法專用的標識,如 _ _ init _ _() 代表類的建構函式。
行和縮排
- 1. 學習Python與其他語言最大的區別:Python不使用{}來控制,而使用縮排來使用模組。
- 2. 要注意區別4個空格和Tab鍵。很容易導致執行出錯。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print "hello world";
if True:
print("Answer:");
print("true");
else:
print("Answer:");
# 沒有嚴格縮排,在執行時會報錯
print("false");
Python引號
- 1. Python 可以使用引號( ' )、雙引號( " )、三引號( ''' 或 """ ) 來表示字串。
- 2. 三引號(""")可以由多行組成,是編寫多行文字的快捷語法,常用於文件字串。
Python註釋
- 1. python中單行註釋採用 # 開頭
- 2. python 中多行註釋使用三個單引號(''')或三個雙引號(""")
Python空行
- 函式之間或類的方法之間用空行分隔,表示一段新的程式碼的開始。類和函式入口之間也用一行空行分隔,以突出函式入口的開始。
Print輸出
- print 預設輸出是換行的,如果要實現不換行需要在變數末尾加上逗號。
//換行
print("hello");
//不換行
print("hello"),
print("world");
多個語句組成的程式碼組
- 1. 縮排相同的一組語句構成一個程式碼塊,我們稱之程式碼組。
- 2. 子句: 像if、while、def和class這樣的複合語句,首行以關鍵字開始,以冒號( : )結束,該行之後的一行或多行程式碼構成程式碼組。
if expression:
suite
elif expression:
suite
else:
suite
Python變數型別
變數可以指定不同的資料型別,這些變數可以儲存整數,小數或字元。
Python變數賦值
- 1. 變數賦值不需要型別宣告
- 2. 每個變數在使用前必須賦值,變數賦值以後該變數才會被建立
counter = 100 # 賦值整型變數
miles = 1000.0 # 浮點型
name = "John" # 字串
print(count),
print(miles),
print(name);
多個變數賦值
a = b = c = 1;
a, b, c = 1,2, "thinking";
標準資料型別
- 1. Numbers(數字)
- 2. String(字串)
- 3. List(列表)
- 4. Tuple(元組)
- 5. Dictionary(字典)
Python數字(Numbers)
- 1. Python支援: int(有符號整型), long(長整型: 3291930L), float(浮點型), complex(複數: a+bj 或者 complex(a,b).
- 2. 可以使用del語句刪除物件的引用. 如: del var1, var2;
Python字串(String)
- 1. 如果想實現字串擷取,可以使用變數 [頭下標:尾下標]。
- 2. 加號(+)是字串連線運算子,星號(*)是重複操作
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = "Hello World!";
print(str); #輸出: Hello World!
print(str[0]); # 輸出: H
print(str[2:5]); # 輸出: llo
print(str[2:]); # 輸出: llo World!
print(str * 2); # 輸出2遍: Hello World!Hello World!
print(str + " TEST"); # 輸出: Hello World! TEST
Python 列表
- 1. 列表使用'[]'來標識
- 2. List(列表)是Python中使用最頻繁的資料型別。
- 3. 列表的切割也可以用到變數 [頭下標:尾下標]
- 4. 加號(+)是字串連線運算子,星號(*)是重複操作
- 5. 列表允許更新,如 :list[2] = 123;
#!/usr/bin/python
# -*- coding: UTF-8 -*-
list = [ "runoob", 786 , 2.23, "john", 70.2 ];
tinylist = [123, "john"];
print(list); #輸出: ['runoob', 786, 2.23, 'john', 70.2]
print(list[0]); #輸出: runoob
print(list[1:3]); #輸出: [786, 2.23]
print(list[2:]); #輸出: [2.23, 'john', 70.2]
print(tinylist *2 ); #輸出: [123, 'john', 123, 'john']
print(list + tinylist); #輸出: ['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
Python 元組
- 1. 元組用'()'標識
- 2. 元組是另一個數據型別,類似於List(列表)
- 3. 元組不允許二次賦值,相當於只讀列表。如:tuple[2] = 1000非法訪問
tuply = ("runoob", 786 , 2.23, "john", 70.2 );
tinytuply = (123, "john");
print(tuply); #輸出: ['runoob', 786, 2.23, 'john', 70.2]
print(tuply[0]); #輸出: runoob
print(tuply[1:3]); #輸出: [786, 2.23]
print(tuply[2:]); #輸出: [2.23, 'john', 70.2]
print(tinytuply *2 ); #輸出: [123, 'john', 123, 'john']
print(tuply + tinytuply); #輸出: ['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
Python字典
- 1. 字典用"{ }"標識。
- 2. 類似於其他語言的:Map
dict = {};
dict["one"] = "This is one";
dict[2] = "This is two";
tinydict = {"name": "john", "code":6734, "dept":"sales"};
print(dict["one"]); # 輸出: This is one
print(dict[2]); # 輸出: This is two
print(tinydict); # 輸出: {'dept': 'sales', 'code': 6734, 'name': 'john'}
print(tinydict.keys()); # 輸出: ['dept', 'code', 'name']
print(tinydict.values()); # 輸出: ['sales', 6734, 'john']
Python資料型別轉換
- int('12', 16),就是說:12是一個16進位制的。輸出為: 18.
函式 | 描述 |
---|---|
int(x [,base]) | 將x轉換為一個整數 |
long(x [,base] ) | 將x轉換為一個長整數 |
float(x) | 將x轉換到一個浮點數 |
complex(real [,imag]) | 建立一個複數 |
str(x) | 將物件 x 轉換為字串 |
repr(x) | 將物件 x 轉換為表示式字串 |
eval(str) | 用來計算在字串中的有效Python表示式,並返回一個物件 |
tuple(s) | 將序列 s 轉換為一個元組 |
list(s) | 將序列 s 轉換為一個列表 |
set(s) | 轉換為可變集合 |
dict(d) | 建立一個字典。d 必須是一個序列 (key,value)元組 |
frozenset(s) | 轉換為不可變集合 |
chr(x) | 將一個整數轉換為一個字元 |
unichr(x) | 將一個整數轉換為Unicode字元 |
ord(x) | 將一個字元轉換為它的整數值 |
hex(x) | 將一個整數轉換為一個十六進位制字串 |
oct(x) | 將一個整數轉換為一個八進位制字串 |
Python 運算子
Python算術運算子
運算子 | 描述 | 舉例 |
---|---|---|
** | 冪 | a**b 為10的20次方, 輸出結果 100000000000000000000 |
// | 取整除 | 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0 |
Python邏輯運算子
運算子 | 描述 | 舉例 |
---|---|---|
and | x and y | 布林"與", 類似於: && |
or | x or y | 布林"或", 類似於:或 |
not | not x | 布林"非", 類似於: ! |
Python 成員運算子
運算子 | 描述 |
---|---|
in | 如果在指定的序列中找到值返回 True,否則返回 False |
not in | 如果在指定的序列中沒有找到值返回 True,否則返回 False |
a = 7;
b = 2;
list = [1,2,3,4,5];
if(a in list):
print("a is in list");
else:
print(" a is not list"); # 輸出
if(b in list):
print("b is in list"); # 輸出
else:
print("b is not list");
Python 身份運算子
- 1. is是傳遞地址
- 2. == 是比較值。
運算子 | 描述 |
---|---|
is | is 是判斷兩個識別符號是不是引用自一個物件 |
is not | is not 是判斷兩個識別符號是不是引用自不同物件 |
//運用指令碼執行,是同一個物件。
a = 7;
b = 7;
if(a is b):
print("a is b"); # 輸出
else:
print(" a is not list");
b = 10;
if(a is b):
print("a is b");
else:
print("a is not b"); # 輸出
Python條件語句
if 判斷語句1:
執行語句....;
elif 判斷語句2:
執行語句....;
else:
執行語句3;
num = 9
if(num >= 0 and num <= 10): # 判斷值是否在0~10之間
print 'hello'; # 輸出結果: hello
Python 迴圈語句
Python的While語句
numbers = [12, 37, 5, 42, 8, 3];
even = [];
odd = [];
while(len(numbers) > 0):
number = numbers.pop();
if(number%2==0):
even.append(number);
else:
odd.append(number);
Python的While-else語句
- 當while後的條件不滿足時,執行:else語句
count = 0
while(count < 5):
print count, " is less than 5"
count = count + 1
else:
print count, " is not less than 5"
Python的for迴圈語句
for(letter in 'Python'): # 第一個例項
print '當前字母 :', letter
fruits = ['banana', 'apple', 'mango']
for(fruit in fruits): # 第二個例項
print '當前水果 :', fruit
print "Good bye!"
Python的for-else語句
- 當for後的條件不滿足時,執行:else語句
Python的pass語句
- 1. pass是空語句,為了保證程式結構的完整性。
- 2. pass不做任何事,一般用作佔位符
Python Number(數字)
- 1. Python支援: int(有符號整型), long(長整型: 3291930L), float(浮點型), complex(複數: a+bj 或者 complex(a,b).
- 2. 可以使用del語句刪除物件的引用. 如: del var1, var2;
Python資料型別轉換
- int('12', 16),就是說:12是一個16進位制的。輸出為: 18.
函式 | 描述 |
---|---|
int(x [,base]) | 將x轉換為一個整數 |
long(x [,base] ) | 將x轉換為一個長整數 |
float(x) | 將x轉換到一個浮點數 |
complex(real [,imag]) | 建立一個複數 |
str(x) | 將物件 x 轉換為字串 |
repr(x) | 將物件 x 轉換為表示式字串 |
eval(str) | 用來計算在字串中的有效Python表示式,並返回一個物件 |
tuple(s) | 將序列 s 轉換為一個元組 |
list(s) | 將序列 s 轉換為一個列表 |
set(s) | 轉換為可變集合 |
dict(d) | 建立一個字典。d 必須是一個序列 (key,value)元組 |
frozenset(s) | 轉換為不可變集合 |
chr(x) | 將一個整數轉換為一個字元 |
unichr(x) | 將一個整數轉換為Unicode字元 |
ord(x) | 將一個字元轉換為它的整數值 |
hex(x) | 將一個整數轉換為一個十六進位制字串 |
oct(x) | 將一個整數轉換為一個八進位制字串 |
Python數學函式
函式 | 描述 |
---|---|
abs(x) | 返回數字的絕對值,如abs(-10) 返回 10 |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
exp(x) | 返回e的x次冪(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回數字的絕對值,如math.fabs(-10) 返回10.0 |
ceil(x) | 返回數字的上入整數,如math.ceil(4.1) 返回 5 |
floor(x) | 返回數字的下舍整數,如math.floor(4.9)返回 4 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10為基數的x的對數,如math.log10(100)返回 2.0 |
max(x1, x2,...) | 返回給定引數的最大值,引數可以為序列。 |
min(x1, x2,...) | 返回給定引數的最小值,引數可以為序列。 |
modf(x) | 返回x的整數部分與小數部分,兩部分的數值符號與x相同,整數部分以浮點型表示。 |
pow(x, y) | x**y 運算後的值。 |
round(x [,n]) | 返回浮點數x的四捨五入值,如給出n值,則代表舍入到小數點後的位數。 |
sqrt(x) | 返回數字x的平方根 |
Python隨機數函式
函式 | 描述 |
---|---|
choice(seq) | 從序列的元素中隨機挑選一個元素,如random.choice(range(10)),從0到9中隨機挑選一個整數 |
randrange | ([start,] stop [,step])從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數預設值為1 |
random() | 隨機生成下一個實數,它在[0,1)範圍內 |
seed([x]) | 改變隨機數生成器的種子seed |
shuffle(list) | 將序列的所有元素隨機排序 |
uniform(x, y) | 隨機生成下一個實數,它在[x,y]範圍內 |
Python數學常量
常量 | 描述 |
---|---|
pi | 數學常量pi(圓周率) |
e | 數學常量e,e是自然數 |
Python字串
Python字串格式化
符號 | 描述 |
---|---|
%c | 格式化字元及其ASCII碼 |
%s | 格式化字串 |
%d | 格式化整數 |
%u | 格式化無符號整型 |
%o | 格式化無符號八進位制數 |
%x | 格式化無符號十六進位制數 |
%X | 格式化無符號十六進位制數(大寫) |
%f | 格式化浮點數字,可指定小數點後的精度 |
%e | 用科學計數法格式化浮點數 |
%E | 作用同%e,用科學計數法格式化浮點數 |
%g | %f和%e的簡寫 |
%G | %f 和 %E 的簡寫 |
%p | 用十六進位制數格式化變數的地址 |
Python三引號
- 三引號(""")可以將字串變成多行,且字串中可以包括一些特殊字元
Python列表
- 列表的資料項不需要具有相同的型別
刪除列表元素
list = ["thinking", "fioa", 123, 456];
print list # 輸出: ['thinking', 'fioa', 123, 456]
del list[2]
print list # 輸出: ['thinking', 'fioa', 456]
Python列表擷取
表示式 | 結果 | 描述 |
---|---|---|
L[2] | 'fioa' | 讀取列表中第三個元素 |
L[-2] | 123 | 讀取列表中倒數第二個元素 |
L[1:] | ['fioa', 123, 456] | 從第二個元素開始擷取列表 |
list2 = ["thinking", "fioa", 123, 456]
print list2[2] # 輸出 123
print list2[-3] # 輸出 fioa
print list2[1:] # 輸出 ['fioa', 123, 456]
Python元組
- 1. 元組只有一個元素,需要在元素後面新增逗號。如:tup1 = (50,);
- 2. 元組不能修改,意味著元組不能刪除,更新等更改型操作。
Python字典
刪除字典元素
- 1. 能刪除單一的元素,也能刪除整個字典。還可以清空整個字典。
- 2. 鍵必須不可變,所以可以用數字,字串或元組充當。但是列表不能作為key。
dict = {"Name": "thinking", "age":18, "lover":"ppp"}
print dict #輸出 {'age': 18, 'Name': 'thinking', 'lover': 'ppp'}
del dict["lover"]
print dict #輸出 {'age': 18, 'Name': 'thinking'}
dict.clear()
del dict
Python日期和時間
- 1. Python提供了time和calendar模組用於格式化時間和日期。
- 2. 時間間隔是以秒為單位的浮點數。
ticks = time.time()
print ticks # 輸出:1508668369.94
格式化日期
- 使用time模組的strftime方法來格式化日期
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # 輸出: 2017-10-22 18:36:56
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()) # 輸出: Sun Oct 22 18:36:56
# 將格式化轉換成時間戳
a = "Sun Oct 22 18:36:56 2017"
print time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y")) # 輸出: 1508668616.0
獲取某月日曆
cal = calendar.month(2017, 2)
'''輸出:
February 2017
Mo Tu We Th Fr Sa Su
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28
'''
print cal
Python函式
定義一個函式
- 1. 函式程式碼塊以def關鍵字開頭,後接函式識別符號號名稱和圓括號()
- 2. 任何傳入引數和自變數必須放在圓括號中間。圓括號之間可以用於定義引數
- 3. 函式的第一行語句可以選擇性地使用文件字串(用於存放函式說明)
- 4. 函式內容以冒號起始,並且縮排
- 5. return [表示式]結束函式,選擇性地返回一個值給呼叫方。不帶表示式的return相當於返回 None
def functionname(parameters):
"""函式說明"""
function_suite
return [expression]
函式呼叫
def printme(str):
"""列印任何傳入的字串"""
print str
return
printme("thinking") # 輸出:thinking
printme("fioa") # 輸出:fioa
引數傳遞
在Python中,string,tuples和numbers是不可更改的物件,而list, dict等則是可修改的物件.
- 1. 不可變型別:變數賦值 a=5 後再賦值 a=10,這裡實際是新生成一個int值的物件10,再讓a指向它,5就被丟棄。
- 2. 可變型別:變數賦值 la=[1,2,3,4]後再賦值la[2]=5則是將list la的第三個元素更改了。
python函式的引數傳遞:
- 1. 不可變型別:類似於c++的值傳遞,如整數,字串,元組。如fun(a),傳遞的只是a的值。如果在函式內部修改了a的值,對傳入的值沒有任何影響.
- 2. 可變型別:類似C++的引用傳遞,如列表。如fun(la)傳入,函式內部修改了la,對傳入的值有影響。
python傳不可變物件例項
def changeint(a):
a = 10
b = 2
changeint(b)
print b # 結果: 2
python傳可變物件例項
def changelist(mylist):
mylist.append("thinking")
return
mylist = [1, 2, 3]
print mylist # 輸出:[1, 2, 3]
changelist(mylist)
print mylist # 輸出:[1, 2, 3, 'thinking']
總結:
- 1. 不可變型別(string, number, tuples)作為引數傳值到函式中,如果在函式中修改,無效。
- 2. 可變型別(list, dict)作為引數傳值到函式中,如果在函式中修改,有效。
函式引數
呼叫函式時可使用的引數型別
- 1. 必備引數
- 2. 關鍵字引數
- 3. 預設引數
- 4. 不定長引數
必備引數
想呼叫函式,必須傳入對應的引數
def printmustargument(str):
"""必備引數"""
print str
return
str = "ppp"
printmustargument(str) # 輸出:ppp
關鍵字引數
使用關鍵字引數,允許呼叫函式時引數的順序可以不一致。
def printkeywordargument(name, age):
"""關鍵字函式"""
print "Name: ", name
print "Age:", age
printkeywordargument(name="ppp", age=35) # 輸出: Name: ppp Age: 35
預設引數
呼叫函式時,預設引數沒有傳入,使用預設值
def printdefaultargument(name, age=20):
"""預設引數"""
print "Name: ", name
print "Age:", age
printdefaultargument(name="thinking_fioa") # 輸出: Name: thinking_fioa Age: 20
不定長引數
函式接受任意長度的引數
def printmoreargument(arg1, *vartuple):
"""不定長引數"""
print arg1
for var in vartuple:
print var
return
printmoreargument(10) # 輸出:10
printmoreargument(10, 20, 30) # 輸出: (10, 20, 30)
匿名函式
python使用lambda來建立匿名函式
- 1. lambda只是一個表示式,函式體比def簡單很多
- 2. lambda函式擁有自己的名稱空間,除了自有引數列表和全域性名稱空間裡的引數外,其他都不能訪問
語法
- lambda [arg1 [, arg2,... argn]]: expression
sum = lambda arg1, arg2: arg1 + arg2
print "sum is: ", sum(10, 20) # 輸出: 30
return語句
- return語句[表示式],將計算結果返回
def sumtwonumber(arg1, arg2):
return arg1+arg2
print sumtwonumber(100, 200) # 輸出: 300
變數作用域
- 1. 全域性變數:定義在函式外的變數
- 2. 區域性變數:定義在函式內的變數,只能在函式內部訪問。
- 3. 全域性變數想作用與函式內,需要加一個global
total = 1
def sumtwonumber(arg1, arg2):
total = arg1 + arg2
print "函式內total: ", total # 輸出: 函式內total: 300
return total
sumtwonumber(100, 200) # 輸出: 300
print "全域性變數: ", total # 輸出: 全域性變數: 1
模組
- Python模組(Module),是一個Python檔案,以.py結尾
support.py是:
def print_func(var):
print "Hello ", var
return
test.py是
import support
support.print_func("thinking") # 輸出:Hello thinking
from ... import
- 語法: from support import print_func
搜尋路徑
當匯入一個模組,Python解析器搜尋模組的順序:
- 1. 當前目錄
- 2. 如果當前目錄沒有,搜尋shell變數PYTHONPATH下的每個目錄
- 3. 如果找不到,Python會檢視預設路徑。UNIX路徑地址:/usr/local/lib/python
名稱空間和作用域
當函式中想修改全域性變數,需要使用關鍵字:global
Money = 2000
def add_money():
global Money
Money = Money + 200
print Money # 輸出:2000
add_money()
print Money # 輸出:2200
dir()函式
dir()函式是一個排好序的字串列表,內容是一個模組裡定義過的名字
import support
print dir(support) # 輸出:['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'print_func']
globals() 和 locals() 函式
- 1. globals() 和 locals() 函式可被用來返回全域性和區域性名稱空間裡的名字。
- 2. 在函式內部呼叫 locals(),返回的是所有能在該函式裡訪問的命名。
- 3. 在函式內部呼叫 globals(),返回的是所有在該函式裡能訪問的全域性名字。
- 4. 兩個函式的返回型別都是字典。所以名字們能用 keys() 函式摘取。
reload()函式
當一個模組被匯入到一個指令碼,模組頂層部分的程式碼只會被執行一次。如果想從新執行模組裡頂層部分的程式碼,需要使用reload()函式。
- reload(module_name)
python包
- 1. 包是一個分層次的檔案目錄結構,可以包含模組,子包和子包的子包等組成的Python的應用環境
- 2. 包其實就是資料夾,但是資料夾下,一定要有檔案:__init__.py。檔案__init__.py用於標識當前資料夾是一個包
定義包:package_runoob和檔案:runoob1.py
def runoob1():
print "I am runoob1"
在測試檔案: test.py
import package_runoob.runoob1
package_runoob.runoob1.runoob1() # 輸出: I am runoob1
Python檔案I/O
- 1. File物件方法:file物件提供了操作檔案的一系列方法
- 2. Os物件方法:提供了處理檔案及目錄的一系列方法
讀取鍵盤輸入
Python提供了兩個內建函式從標準輸入讀取一行文字,預設的標準輸入是鍵盤
- 1. raw_input
- 2. input
raw_input
raw_input(提示文字)函式從標準輸入讀取一行,並返回一個字串(去掉結尾的換行符)
str = raw_input("請輸入: ") # 輸入: thinking
print "輸入內容是:", str # 輸出: thinking
input
input函式和raw_input函式基本類似。但input可以接收一個Python表示式輸入,並將運算結果返回
str2 = input("請輸入: ") # 輸入: [x*5 for x in range(2,10,2)]
print "輸入內容是:", str2 # 輸出: [10, 20, 30, 40]
注: range函式用法解釋: range(start, end, step)
開啟和關閉檔案
Open方法
Python函式內建一個open()函式
- 1. 語法: file object = open(filename, [, accesscode], [, buffering])
- 2. file_name變數是訪問檔案的名稱字串
- 3. access_code是決定開啟檔案的模式:只讀,寫入,追加等
- 4. buffering:如果buffering的值設為0,就不會有寄存。如果buffering的值設定為1,訪問檔案會寄存行
close方法
File物件的close()方法:重新整理緩衝區裡任何還沒寫的資訊,並關閉該檔案
write方法
- 1. write()可將任何字串寫入開啟的檔案。主要注意的是:Python字串可以是二進位制資料,而不是僅僅是文字
- 2. write()方法不會在字串的結尾加上換行符('\n')
read方法
- fileObject.read([count])。從已開啟的檔案中讀取位元組數,如果沒有傳,則讀入整個檔案尾
fileObject = open("test_io_file.txt", "rb+")
fileLine = fileObject.read()
print "context is : ", fileLine
fileObject.close()
檔案定位
- 1. tell()方法返回檔案內當前讀取的位置。也就是說:下次讀取的起點位置
- 2. seek(offset,[, from])方法改變當前檔案的偏移量。
- from = 0:從檔案開頭位置參考
- from = 1:使用檔案的當前位置
- from = 2:從檔案的末尾位置開始
重新命名和刪除檔案
Python提供os模組,幫助執行檔案處理操作的方法,比如:重新命名和刪除檔案
- os.rename(currentfilename, newfilename)
- os.remove(file_name)
Python的目錄管理
- 1. mdkir()方法:建立新的目錄
- 2. chdir()方法:用chdir()方法來改變當前的目錄
- 3. getcwd()方法:顯示當前的工作目錄
- 4. rmdir()方法:刪除目錄,目錄名稱以引數傳遞。注意:刪除這個目錄之前,所有內容必須已經被刪除
Python異常處理
異常處理
try/except語句用來檢測try語句塊中的錯誤,從而讓except語句捕獲異常資訊並處理
try:
<語句> #執行別的程式碼
except <名字>:
<語句> #如果在try部份引發了'name'異常
except <名字>,<資料>:
<語句> #如果引發了'name'異常,獲得附加的資料
else:
<語句> #如果沒有異常發生
說明:
- 1. try/except語句理解和java的一樣,除了else有點區別
- 2. 如果try子句執行沒有發生異常,python就會執行else語句
使用except而不帶任何異常型別
- try/except語句中,如果except不帶任何異常,表示捕獲所有的異常
try:
正常的操作...
except:
發生異常,執行這塊程式碼...
else:
如果沒有異常執行這塊程式碼
使用except而帶多種異常型別
- 使用相同的except語句而處理多個異常資訊
try:
正常的操作...
except(Exception1[, Exception2[,...ExceptionN]]]):
發生以上多個異常中的一個,執行這塊程式碼...
else:
如果沒有異常執行這塊程式碼
try-finally語句
- try-finally語句中,無論如何都會執行finally語句
try:
正常的操作...
except(Exception1):
發生異常,執行這塊程式碼...
finally:
無論如何都會執行這段程式碼
異常的引數
- 異常帶上引數,幫助理解異常原因。在except後面加上Argument引數
def temp_convert(var):
try:
return int(var)
except ValueError, Argument:
print "reason: ", Argument
temp_convert("abc") # 輸出:reason: invalid literal for int() with base 10: 'abc'
觸發異常
- 1. 使用raise語句來觸發異常
- 2. 語法:raise [Exception [,args] ]
def throw_excep(var):
print "function start..."
raise Exception("you win", var)
try:
throw_excep("abcd")
except Exception:
print "catch exception"
else:
print "no problem." # 輸出: no problem
使用者自定義異常
- 建立一個新的異常類,應該繼承自Exception類
class Networkerror(Exception):
def __init__(self, arg):
self.args = arg
try:
raise Networkerror("Bad hostname")
except Networkerror, argument:
print argument.args # 輸出: ('B', 'a', 'd', ' ', 'h', 'o', 's', 't', 'n', 'a', 'm', 'e')