一、新手必會Python基礎

博客內容:

1、基礎語法

2、運算符

3、流程控制

4、列表、元組、字典、集合

5、字符串

6、文件操作

 

 

一、基礎語法

1、標識符

命名規則:

  • 以字母、下劃線開頭
  • 其他部分由字母、数字或下劃線組成
  • 不能使用關鍵字命名;
  • 常量一般全部是大寫;
  • 命名要有意義,不宜過長。

定義:可以改變的量:

age=19    #定義一個名為age的量,他的值為19

常量:不可以改變的量(命名字母全大寫)

2、註釋

Python中單行註釋以 # 開頭

行註釋可以用多個 # 號,還有 ”’ 和 “””

《一、新手必會Python基礎》
《一、新手必會Python基礎》

# 單行註釋
 
'''
多行註釋
'''
 
"""
多行註釋
"""

註釋

3、行與縮進

python縮進來表示代碼塊,不使用大括號 {} 。

縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數。

4、数字(Number)類型

python中数字有四種類型:整數、布爾型、浮點數和複數。

  • int (整數), 如 1
  • bool (布爾), 如 True
  • float (浮點數), 如 1.23、3E-2
  • complex (複數), 如 1 + 2j、 1.1 + 2.2j
age = 19

ps:類型的轉換

 

  • int(x) 將x轉換為一個整數。
  • float(x) 將x轉換到一個浮點數。
  • complex(x) 將x轉換到一個複數,實數部分為 x,虛數部分為 0。
  • complex(x, y) 將 x 和 y 轉換到一個複數,實數部分為 x,虛數部分為 y。x 和 y 是數字錶達式。

5、字符串(String)

“oeasys”

  • python中單引號和雙引號使用完全相同。
  • 使用三引號(”’或”””)可以指定一個多行字符串
  • 轉義符 ‘\’ 反斜杠可以用來轉義
  • Python中的字符串不能改變
  • 字符串可以用 + 運算符連接在一起,用 * 運算符重複以及格式化輸出

ps:格式化輸出

字符串 %s;整數 %d、;浮點數%f

name = "oeasys"
print ("i am %s " ,% name)
  
#輸出: i am oeasys

6、布爾值

一個True(真)
一個False(假)

7、用戶輸入與輸出

input() 等待用戶輸入

print() 打印輸出

二、運算符

1、Python算術運算符

《一、新手必會Python基礎》

2、Python比較運算符

 《一、新手必會Python基礎》

3、Python賦值運算符

《一、新手必會Python基礎》

4、Python位運算符

 《一、新手必會Python基礎》

5、Python邏輯運算符

《一、新手必會Python基礎》

6、Python成員運算符

 《一、新手必會Python基礎》 

7、Python身份運算符

《一、新手必會Python基礎》 

8、Python運算符優先級

 

 《一、新手必會Python基礎》

運算符圖片並非原創,轉自菜鳥教程

 三、流程控制

1、條件控制

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 if 如果:    # 如果為真,執行如果代碼
2     執行如果代碼
3 elif 否則如果:    # 否則如果為真,執行否則如果代碼
4     執行否則如果代碼
5 else:    # 前面都不為真,執行否則代碼
6     執行否則代碼

if-elif-else
 
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 result = 值1 if 條件 else 值2
2  
3 # 如果條件成立,那麼將 “值1” 賦值給result變量,否則,將“值2”賦值給result變量

三元運算

 2、循環控制

1、while 循環

while 判斷條件: 語句

 2、while 循環使用 else 語句

while 如果為真:    # 如果為真,執行循環語句
   執行循環語句
else:    #while循環為假,執行否則語句
   執行否則語句

 3、for 語句

for i in range(10):

  執行語句 

 ps:range()函數

內置range()函數,它會生成數列

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 for i in range(5):
2      print(i)
3 ...
4 0
5 1
6 2
7 3
8 4


 使用range指定區間的值

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 for i in range(5,9) :
2     print(i)
3  
4     
5 5
6 6
7 7
8 8


 range以指定数字開始並指定不同的增量(甚至可以是負數,有時這也叫做’步長’)

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 for i in range(0, 10, 3) :
2     print(i)
3  
4     
5 0
6 3
7 6
8 9


 您可以結合range()和len()函數以遍歷一個序列的索引

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
2 for i in range(len(a)):
3 ...     print(i, a[i])
4 ... 
5 0 Google
6 1 Baidu
7 2 Runoob
8 3 Taobao
9 4 QQ


 range()函數來創建一個列表

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>>list(range(5))
2 [0, 1, 2, 3, 4]


 

 

4、break和continue語句

  1. break 語句可以跳出 for 和 while 的循環體
  2. continue語句被用來告訴Python跳過當前循環塊中的剩餘語句,然後繼續進行下一輪循環。

 5、pass 語句

Python pass是空語句,是為了保持程序結構的完整性。

pass 不做任何事情,一般用做佔位語句

 四、列表、元組、字典、集合

1、列表

創建列表

names = ['張三',"李四",'王五']

通過下標訪問列表中的元素,下標從0開始計數

>>> names[0]
'張三'
>>> names[2]
'王五'
>>> names[-1]
'王五'
>>> names[-2] #還可以倒着取
'李四' 

《一、新手必會Python基礎》
《一、新手必會Python基礎》

 1 >>> num = ["1","2","3","4","5","6"]
 2 >>> num[1:4]  #取下標1至下標4之間的数字,包括1,不包括4
 3 ['2', '3', '4']
 4 >>> num[1:-1] #取下標1至-1的值,不包括-1
 5 ['2', '3', '4', '5']
 6 >>> num[0:3] 
 7 ['1', '2', '3']
 8 >>> num[:3] #如果是從頭開始取,0可以忽略,跟上句效果一樣
 9 ['1', '2', '3']
10 >>> num[3:] #如果想取最後一個,必須不能寫-1,只能這麼寫
11 ['4', '5', '6'] 
12 >>> num[3:-1] #這樣-1就不會被包含了
13 ['4', '5']
14 >>> num[0::2] #後面的2是代表,每隔一個元素,就取一個
15 ['1', '3', '5'] 
16 >>> num[::2] #和上句效果一樣
17 ['1', '3', '5']

切片:取值
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 num = ['1', '2', '3', '4', '5', '6']
2 >>> num.append("7")
3 >>> num
4 ['1', '2', '3', '4', '5', '6', '7']

追加
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>> num = ['1', '2', '3', '4', '5', '6', '7']
2 >>> num.insert(2,"強行從3前面插入")
3 >>> num
4 ['1', '2', '強行從3前面插入', '3', '4', '5', '6', '7']

插入
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>> num = ['1', '2', '3', '4', '5']
2 >>> num[2] = "new"
3 >>> num
4 ['1', '2', 'new', '3', '4', '5']

修改
《一、新手必會Python基礎》
《一、新手必會Python基礎》

 1 >>> mun = ['1', '2', '3', '4', '5', '6', '7']
 2 >>>del num[2] 
 3 >>> num
 4 num = ['1', '2', '3', '4', '5', '6', '7']
 5 
 6 
 7 
 8 >>> num.remove("4") #刪除指定元素
 9 >>> num
10 ['1', '2', '5', '6', '7']
11 >>> num.pop() #刪除列表最後一個值 
12 '7'
13 >>> nun
14 ['1', '2', '5', '6']

刪除
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>> num = ['1', '2', '3', '4', '5']
2 >>> num1 = [1,2,3]
3 >>> num.extend(num1)
4 >>> num
5 ['1', '2', '3', '4', '5', 1, 2, 3]

擴展
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>> num = ['1', '2', '3', '4', '5', 1, 2, 3]
2 
3 >>> num_copy = num.copy()
4 >>> num_copy
5 ['1', '2', '3', '4', '5', 1, 2, 3]

拷貝
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>> num = ['1', '2', '3', '4', '5','2']
2 >>> num.count("2")
3 2

統計
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>> num = ['4', '2', '1','9', '7', '5']
2 >>> num.sort() 
3 >>> num
4 ['1', '2', '4', '5', '7', '9']

排序
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>> num = ['4', '2', '1','9', '7', '5']
2 >>> num.reverse()
3 >>> num
4 ['5', '7', '9', '1', '2', '4']

反轉
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>> num = ['4', '2', '1','9', '7', '5']
2 >>> num.index('9')
3 3

獲取下標
 

2、元組

Python 的元組與列表類似,元組的元素不能修改,又叫只讀列表。

num = ("1","2","3")

只有2個方法:一個是count,一個是index 

3、字典

字典是另一種可變容器模型,且可存儲任意類型對象。

字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中 

字典是無序的,key是唯一的

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 names = {
2     'name1': "zhangsan",
3     'name2': "李四",
4     'name3': "王五",
5 }

字典創建
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 names = {
2     'name1': "zhangsan",
3     'name2': "李四",
4     'name3': "王五",
5 }
6 names["name4"] = "wangwu"

增加
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 name['name2'] = "張三"

修改
《一、新手必會Python基礎》
《一、新手必會Python基礎》

info.pop("name2")  #刪除方法1

del info['name3']  #刪除方法2

info.popitem() #隨機刪除

刪除
《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 >>> "name1" in names #查找1
2 True
3 >>> names.get("name2")  #獲取
4 
5 >>> names["name9"] #獲取,但是如果key不存在,就報錯

查找
《一、新手必會Python基礎》
《一、新手必會Python基礎》

 1 values() 函數以列表返回字典中的所有值
 2 
 3 keys() 函數以列表返回一個字典所有的鍵
 4 
 5 setdefault(key,default) 函數, 如果鍵不存在於字典中,將會添加鍵並將值設為默認值
 6 key -- 查找的鍵值。
 7 default -- 鍵不存在時,設置的默認鍵值。
 8 
 9 update() 函數把字典dict2的鍵/值對更新到dict里。
10 
11 items() 函數以列表返回可遍歷的(鍵, 值) 元組數組
12 
13 has_key() 函數用於判斷鍵是否存在於字典中,如果鍵在字典dict里返回true,否則返回false。
14 
15 fromkeys() 函數用於創建一個新字典,以序列 seq 中元素做字典的鍵,value 為字典所有鍵對應的初始值。
16 
17 copy() 函數返回一個字典的淺複製。

其它方法

序號 函數及描述
1 cmp(dict1, dict2)
比較兩個字典元素。
2 len(dict)
計算字典元素個數,即鍵的總數。
3 str(dict)
輸出字典可打印的字符串表示。
4 type(variable)
返回輸入的變量類型,如果變量是字典就返回字典類型。

 

序號 函數及描述
1 dict.clear()
刪除字典內所有元素
2 dict.copy()
返回一個字典的淺複製
3 dict.fromkeys(seq[, val])
創建一個新字典,以序列 seq 中元素做字典的鍵,val 為字典所有鍵對應的初始值
4 dict.get(key, default=None)
返回指定鍵的值,如果值不在字典中返回default值
5 dict.has_key(key)
如果鍵在字典dict里返回true,否則返回false
6 dict.items()
以列表返回可遍歷的(鍵, 值) 元組數組
7 dict.keys()
以列表返回一個字典所有的鍵
8 dict.setdefault(key, default=None)
和get()類似, 但如果鍵不存在於字典中,將會添加鍵並將值設為default
9 dict.update(dict2)
把字典dict2的鍵/值對更新到dict里
10 dict.values()
以列表返回字典中的所有值
11 pop(key[,default])
刪除字典給定鍵 key 所對應的值,返回值為被刪除的值。key值必須給出。 否則,返回default值。
12 popitem()
隨機返回並刪除字典中的一對鍵和值。

4、集合 

集合是一個無序的,不重複的數據組合,它的主要作用如下:

  • 去重,把一個列表變成集合,就自動去重了
  • 關係測試,測試兩組數據之前的交集、差集、並集等關係

《一、新手必會Python基礎》
《一、新手必會Python基礎》

 1 s = set([3,5,9,10])      #創建一個數值集合  
 2   
 3 t = set("Hello")         #創建一個唯一字符的集合  
 4 
 5 
 6 a = t | s          # t 和 s的並集  
 7   
 8 b = t & s          # t 和 s的交集  
 9   
10 c = t – s          # 求差集(項在t中,但不在s中)  
11   
12 d = t ^ s          # 對稱差集(項在t或s中,但不會同時出現在二者中)  
13   
14    
15   
16 基本操作:  
17   
18 t.add('x')            # 添加一項  
19   
20 s.update([10,37,42])  # 在s中添加多項  
21   
22    
23   
24 使用remove()可以刪除一項:  
25   
26 t.remove('H')  
27   
28   
29 len(s)  
30 set 的長度  
31   
32 x in s  
33 測試 x 是否是 s 的成員  
34   
35 x not in s  
36 測試 x 是否不是 s 的成員  
37   
38 s.issubset(t)  
39 s <= t  
40 測試是否 s 中的每一個元素都在 t 中  
41   
42 s.issuperset(t)  
43 s >= t  
44 測試是否 t 中的每一個元素都在 s 中  
45   
46 s.union(t)  
47 s | t  
48 返回一個新的 set 包含 s 和 t 中的每一個元素  
49   
50 s.intersection(t)  
51 s & t  
52 返回一個新的 set 包含 s 和 t 中的公共元素  
53   
54 s.difference(t)  
55 s - t  
56 返回一個新的 set 包含 s 中有但是 t 中沒有的元素  
57   
58 s.symmetric_difference(t)  
59 s ^ t  
60 返回一個新的 set 包含 s 和 t 中不重複的元素  
61   
62 s.copy()  
63 返回 set “s”的一個淺複製

常用操作

 

五、字符串

1、Python轉義字符

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

2、Python字符串運算符

操作符 描述 實例
+ 字符串連接 >>>a + b HelloPython
* 重複輸出字符串 >>>a * 2 HelloHello
[] 通過索引獲取字符串中字符 >>>a[1] e
[ : ] 截取字符串中的一部分 >>>a[1:4] ell
in 成員運算符 – 如果字符串中包含給定的字符返回 True >>>H in a True
not in 成員運算符 – 如果字符串中不包含給定的字符返回 True >>>M not in a True
r/R 原始字符串 – 原始字符串:所有的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。 原始字符串除在字符串的第一個引號前加上字母”r”(可以大小寫)以外,與普通字符串有着幾乎完全相同的語法。 >>>print r\n \n >>> print R\n \n
% 格式字符串

3、Python 字符串格式化

python 字符串格式化符號:

    符   號 描述
      %c  格式化字符及其ASCII碼
      %s  格式化字符串
      %d  格式化整數
      %u  格式化無符號整型
      %o  格式化無符號八進制數
      %x  格式化無符號十六進制數
      %X  格式化無符號十六進制數(大寫)
      %f  格式化浮點数字,可指定小數點后的精度
      %e  用科學計數法格式化浮點數
      %E  作用同%e,用科學計數法格式化浮點數
      %g  %f和%e的簡寫
      %G  %F 和 %E 的簡寫
      %p  用十六進制數格式化變量的地址

格式化操作符輔助指令:

符號 功能
* 定義寬度或者小數點精度
用做左對齊
+ 在正數前面显示加號( + )
<sp> 在正數前面显示空格
# 在八進制數前面显示零(‘0′),在十六進制前面显示’0x’或者’0X'(取決於用的是’x’還是’X’)
0 显示的数字前面填充’0’而不是默認的空格
% ‘%%’輸出一個單一的’%’
(var) 映射變量(字典參數)
m.n. m 是显示的最小總寬度,n 是小數點后的位數(如果可用的話)

4、python的字符串內建函數

方法 描述

string.capitalize()

把字符串的第一個字符大寫

string.center(width)

返回一個原字符串居中,並使用空格填充至長度 width 的新字符串

string.count(str, beg=0, end=len(string))

返回 str 在 string 裏面出現的次數,如果 beg 或者 end 指定則返回指定範圍內 str 出現的次數

string.decode(encoding=’UTF-8′, errors=’strict’)

以 encoding 指定的編碼格式解碼 string,如果出錯默認報一個 ValueError 的 異 常 , 除非 errors 指 定 的 是 ‘ignore’ 或 者’replace’

string.encode(encoding=’UTF-8′, errors=’strict’)

以 encoding 指定的編碼格式編碼 string,如果出錯默認報一個ValueError 的異常,除非 errors 指定的是’ignore’或者’replace’

string.endswith(obj, beg=0, end=len(string))

檢查字符串是否以 obj 結束,如果beg 或者 end 指定則檢查指定的範圍內是否以 obj 結束,如果是,返回 True,否則返回 False.

string.expandtabs(tabsize=8)

把字符串 string 中的 tab 符號轉為空格,tab 符號默認的空格數是 8。

string.find(str, beg=0, end=len(string))

檢測 str 是否包含在 string 中,如果 beg 和 end 指定範圍,則檢查是否包含在指定範圍內,如果是返回開始的索引值,否則返回-1

string.format()

格式化字符串

string.index(str, beg=0, end=len(string))

跟find()方法一樣,只不過如果str不在 string中會報一個異常.

string.isalnum()

如果 string 至少有一個字符並且所有字符都是字母或数字則返

回 True,否則返回 False

string.isalpha()

如果 string 至少有一個字符並且所有字符都是字母則返回 True,

否則返回 False

string.isdecimal()

如果 string 只包含十進制数字則返回 True 否則返回 False.

string.isdigit()

如果 string 只包含数字則返回 True 否則返回 False.

string.islower()

如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是小寫,則返回 True,否則返回 False

string.isnumeric()

如果 string 中只包含数字字符,則返回 True,否則返回 False

string.isspace()

如果 string 中只包含空格,則返回 True,否則返回 False.

string.istitle()

如果 string 是標題化的(見 title())則返回 True,否則返回 False

string.isupper()

如果 string 中包含至少一個區分大小寫的字符,並且所有這些(區分大小寫的)字符都是大寫,則返回 True,否則返回 False

string.join(seq)

以 string 作為分隔符,將 seq 中所有的元素(的字符串表示)合併為一個新的字符串

string.ljust(width)

返回一個原字符串左對齊,並使用空格填充至長度 width 的新字符串

string.lower()

轉換 string 中所有大寫字符為小寫.

string.lstrip()

截掉 string 左邊的空格

string.maketrans(intab, outtab])

maketrans() 方法用於創建字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示需要轉換的字符,第二個參數也是字符串表示轉換的目標。

max(str)

返回字符串 str 中最大的字母。

min(str)

返回字符串 str 中最小的字母。

string.partition(str)

有點像 find()和 split()的結合體,從 str 出現的第一個位置起,把 字 符 串 string 分 成 一 個 3 元 素 的 元 組 (string_pre_str,str,string_post_str),如果 string 中不包含str 則 string_pre_str == string.

string.replace(str1, str2,  num=string.count(str1))

把 string 中的 str1 替換成 str2,如果 num 指定,則替換不超過 num 次.

string.rfind(str, beg=0,end=len(string) )

類似於 find()函數,不過是從右邊開始查找.

string.rindex( str, beg=0,end=len(string))

類似於 index(),不過是從右邊開始.

string.rjust(width)

返回一個原字符串右對齊,並使用空格填充至長度 width 的新字符串

string.rpartition(str)

類似於 partition()函數,不過是從右邊開始查找

string.rstrip()

刪除 string 字符串末尾的空格.

string.split(str=””, num=string.count(str))

以 str 為分隔符切片 string,如果 num 有指定值,則僅分隔 num+ 個子字符串

string.splitlines([keepends])

按照行(‘\r’, ‘\r\n’, \n’)分隔,返回一個包含各行作為元素的列表,如果參數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。

string.startswith(obj, beg=0,end=len(string))

檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定範圍內檢查.

string.strip([obj])

在 string 上執行 lstrip()和 rstrip()

string.swapcase()

翻轉 string 中的大小寫

string.title()

返回”標題化”的 string,就是說所有單詞都是以大寫開始,其餘字母均為小寫(見 istitle())

string.translate(str, del=””)

根據 str 給出的表(包含 256 個字符)轉換 string 的字符,

要過濾掉的字符放到 del 參數中

string.upper()

轉換 string 中的小寫字母為大寫

string.zfill(width)

返回長度為 width 的字符串,原字符串 string 右對齊,前面填充0

六、文件操作

 1、初識⽂件操作

使⽤open()函數來打開⼀個⽂件:open(文件名(路徑),mode=“打開文件的方式”,encoding=“字符集utf-8”)

打開⽂件的⽅式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默認使⽤的是r(只讀)模式

 rb, wb, ab, 用來讀取非⽂本⽂件的時候. 比如讀取MP3. 圖像. 視頻等信息的時候就需要⽤到。因為這種數據是沒辦法直接顯⽰出來的. ⽂件上傳下載的時候還會⽤到. 以及直播. 實際上都是這種數據.

2、絕對路徑和相對路徑

1. 絕對路徑:從磁盤根⽬錄開始⼀直到⽂件名.

2. 相對路徑:同⼀個⽂件夾下的⽂件. 相對於當前這個程序所在的⽂件夾⽽⾔. 如果在同 ⼀個⽂件夾中. 則相對路徑就是這個⽂件名. 如果在上⼀層⽂件夾. 則要../

3、只讀(r, rb)

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件路徑.txt",mode="r", encoding="utf-8") # 打開文件
2 content = f.read() # 讀取內容,文件大時不要用
3 print(content) # 打印讀取的內容
4 f.close() # 關閉文件
5 
6 需要注意encoding表⽰編碼集. 根據⽂件的實際保存編碼進⾏獲取數據, 對於我們⽽⾔. 更多的是utf-8.

只讀r

 

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件名.txt",mode="rb" )
2 content = f.read()
3 print(content)
4 f.close()
5 
6 rb的作⽤: 在讀取非⽂本⽂件的時候. 比如讀取MP3. 圖像. 視頻等信息的時候就需要⽤到
7 rb. 因為這種數據是沒辦法直接顯⽰出來的. 在後⾯我們⽂件上傳下載的時候還會⽤到. 還有.我們看的直播. 實際上都是這種數據.

rb. 讀取出來的數據是bytes類型, 在rb模式下. 不能選擇encoding字符集.

 

 

4、只寫(w, wb)

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件", mode="w", encoding="utf-8")
2 f.write("oeasys.cn")
3 f.flush() # 刷新
4 f.close()

w,寫的時候注意. 如果沒有⽂件. 則會創建⽂件, 如果⽂件存在. 則將原件中原來的內容刪除, 再寫入新內容

 

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件", mode="wb")
2 f.write("oeasys.cn".encode("utf-8"))
3 f.flush()
4 f.close()

wb模式下. 可以不指定打開⽂件的編碼. 但是在寫⽂件的時候必須將字符串轉化成utf-8的

 

5、追加(a, ab)

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件", mode="a", encoding="utf-8")
2 f.write("oeasys.cn")
3 f.flush()
4 f.close()

a,在追加模式下. 我們寫入的內容會追加在⽂件的結尾.

 

 

6、r+讀寫

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件", mode="r+", encoding="utf-8")
2 content = f.read()
3 f.write("oeasys.cn")
4 print(content)
5 f.flush()
6 f.close()
7 結果:
8 正常的讀取之後, 寫在結尾

對於讀寫模式. 必須是先讀. 因為默認光標是在開頭的. 準備讀取的. 當讀完了之後再進⾏ 寫入. 我們以後使⽤頻率最⾼的模式就是r+

 

7、w+寫讀

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件", mode="w+", encoding="utf-8")
2 f.write("oeasys.cn")
3 content = f.read()
4 print(content)
5 f.flush()
6 f.close()

先將所有的內容清空. 然後寫入. 最後讀取.

 

 

8、a+寫讀(追加寫讀)

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件", mode="a+", encoding="utf-8")
2 f.write("oeasys.cn")
3 content = f.read()
4 print(content)
5 f.flush()
6 f.close()

a+模式下, 不論先讀還是後讀. 都是讀取不到數據的.

 

 

9、讀取⽂件的⽅法:

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件路徑", mode="r", encoding="utf-8")
2 content = f.read()
3 print(content)

1. read() 將⽂件中的內容全部讀取出來. 弊端: 占內存. 如果⽂件過⼤.容易導致內存崩潰

 

 

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件路徑", mode="r", encoding="utf-8")
2 content = f.readline()
3 content2 = f.readline()
4 content3 = f.readline()
5 content4 = f.readline()
6 content5 = f.readline()

2. readline() ⼀次讀取⼀⾏數據

 

《一、新手必會Python基礎》
《一、新手必會Python基礎》

1 f = open("文件", mode="r", encoding="utf-8")
2 for line in f:
3  print(line.strip())

3. 循環讀取. 這種⽅式是組好的. 每次讀取⼀⾏內容.不會產⽣內存溢出的問題.

 

注意: 讀取完的⽂件句柄⼀定要關閉 f.close()

10、其他操作⽅法

1. seek(n) 光標移動到n位置, 注意, 移動的單位是byte. 所以如果是UTF-8的中⽂部分要 是3的倍數.

  通常我們使⽤seek都是移動到開頭或者結尾.

  seek(偏移量,位置)

 

  移動到開頭: seek(0)

  移動到結尾: seek(0,2)

  seek的第⼆個參數表⽰的是從哪個位置進⾏偏移, 默認是0, 表 ⽰開頭, 1表⽰當前位置, 2表⽰結尾

 

2. tell()獲取到當前光標位置

print(f.tell()) 

3. truncate() 截斷⽂件

  從開頭截斷到光標位置,刪掉光標后⾯的所有內容

  如果給參數,從開頭截斷到參數位置

在r+模式下. 如果讀取了內容. 不論讀取內容多少. 光標顯⽰的是多少. 再寫入 或者操作⽂件的時候都是在結尾進⾏的操作. 

所以如果想做截斷操作. 記住了. 要先挪動光標. 挪動到你想要截斷的位置. 然後再進⾏截斷

 

点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *