91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python 文件讀寫操作(24)

發布時間:2020-07-08 14:54:53 來源:網絡 閱讀:290 作者:qq5d6f345f0205e 欄目:編程語言

以前的代碼都是直接將數據輸出到控制臺,實際上我們也可以通過讀/寫文件的方式讀取/輸出到磁盤文件中,文件讀寫簡稱I/O操作。文件I/O操作一共分為四部分:打開(open)/讀取(read)/寫入(write)/關閉(close)……

python 文件讀寫操作(24)

一.文件的打開 open

在python中打開文件使用函數open(),該函數返回文件句柄,具體使用方法如下:

1

2

3

4

5

file = open("文件名","打開文件模式")

?

# 示例代碼:

# 打開d:/1.txt文件,如果d盤沒有這個文件,會自動在d盤創建1.txt的空白文件,file是返回的文件句柄供讀/寫/關閉文件操作

file = open("d:/1.txt","wb")

其中,打開文件模式有以下幾種類型:

python 文件讀寫操作(24)

?

二.文件的關閉 close

文件在打開讀寫之后記得要有關閉操作,就好比蹲完坑得擦屁股,關閉文件使用close()函數。注意:文件關閉之后,不能在繼續對文件讀寫操作,如果需要讀寫操作需要重新open()打開文件。

python 文件讀寫操作(24)

?

1

file.close() # 關閉文件

?

三.文件的讀取 read

文件打開之后,可以通過返回的文件句柄讀取文件中的內容,文件讀取有以下幾個函數:

1.file.read( [count] )?— count表示需要讀取的文字長度,conut是缺省參數,如果沒有設置count值,默認讀取整個文件所有內容,該函數返回讀取到的內容;

2.file.readline()?— 讀取文件一行數據,返回讀取的內容

3.file.readlines()?— 讀取文件的所有行內容,返回讀取的所有內容,注意:返回的數據類型是列表,列表中每個數據都是文件中的一行數據;

4.注意:文件讀取返回的內容并非字符串str類型,而是字節類型bytes類型,b’ ‘前綴代表的就是bytes.??

?

如果想將bytes類型轉為字符串直接使用bytes.decode()即可,decode()默認使用utf-8編碼;

假如d:/1.txt中的內容如下:

1

2

3

@Blog(個人博客地址): shuopython.com

@WeChat Official Account(微信公眾號):猿說python

@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!

文件讀取的三種方式示例代碼如下:

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

29

30

31

32

33

34

# 方法一:

print("方法一:使用 read() 函數讀取txt內容")

file_object = open("d:/1.txt","rb")

contents = file_object.read() # 默認讀取所有內容

?

# 讀取文件內容,如果文件中含有中文需要decode()解碼,否則中文無法顯示

print(contents)

print("---"*20)

# 使用decode()解碼中文,默認解碼格式為utf-8

print("使用decode()函數解碼中文:")

print(contents.decode())

file_object.close()

?

print("***"*20)

# 方法二:

print("方法二:使用 readline() 函數讀取txt內容")

file_object = open("d:/1.txt","rb")

while True:

????contents = file_object.readline()

????print(contents.decode())# 使用decode()解碼中文,默認解碼格式為utf-8

????if len(contents) == 0: # 讀取內容長度為0,讀取結束

????????break

file_object.close()

?

print("***"*20)

# 方法三:

print("方法三:使用 readlines() 函數讀取txt內容")

file_object = open("d:/1.txt","rb")

# readlines() 返回列表,一行數據就是列表中的一個元素

contents = file_object.readlines()

# 遍歷列表

for content in contents:

????print(content.decode())# 使用decode()解碼中文,默認解碼格式為utf-8

file_object.close()

輸出結果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

方法一:使用 read() 函數讀取txt內容

?

b'@Blog(\xe4\xb8\xaa\xe4\xba\xba\xe5\x8d\x9a\xe5\xae\xa2\xe5\x9c\xb0\xe5\x9d\x80): shuopython.com\r\n@WeChat Official Account(\xe5\xbe\xae\xe4\xbf\xa1\xe5\x85\xac\xe4\xbc\x97\xe5\x8f\xb7)\xef\xbc\x9a\xe7\x8c\xbf\xe8\xaf\xb4python\r\n@Motto:\xe4\xb8\x8d\xe7\xa7\xaf\xe8\xb7\xac\xe6\xad\xa5\xe6\x97\xa0\xe4\xbb\xa5\xe8\x87\xb3\xe5\x8d\x83\xe9\x87\x8c\xef\xbc\x8c\xe4\xb8\x8d\xe7\xa7\xaf\xe5\xb0\x8f\xe6\xb5\x81\xe6\x97\xa0\xe4\xbb\xa5\xe6\x88\x90\xe6\xb1\x9f\xe6\xb5\xb7\xef\xbc\x8c\xe7\xa8\x8b\xe5\xba\x8f\xe4\xba\xba\xe7\x94\x9f\xe7\x9a\x84\xe7\xb2\xbe\xe5\xbd\xa9\xe9\x9c\x80\xe8\xa6\x81\xe5\x9d\x9a\xe6\x8c\x81\xe4\xb8\x8d\xe6\x87\x88\xe5\x9c\xb0\xe7\xa7\xaf\xe7\xb4\xaf\xef\xbc\x81\r\n'

------------------------------------------------------------

使用decode()函數解碼中文:

@Blog(個人博客地址): shuopython.com

@WeChat Official Account(微信公眾號):猿說python

@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!

?

************************************************************

方法二:使用 readline() 函數讀取txt內容

?

@Blog(個人博客地址): shuopython.com

@WeChat Official Account(微信公眾號):猿說python

@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!

?

?

************************************************************

方法三:使用 readlines() 函數讀取txt內容

?

@Blog(個人博客地址): shuopython.com

@WeChat Official Account(微信公眾號):猿說python

@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!

?

四.文件的寫入 write

文件寫入可通過函數write()完成,使用比較簡單,先看看語法:

file.write( [bytes] )?— 直接傳入 bytes 類型的字符即可,b”? ?“前綴代表的就是bytes.?

使用比較簡單,直接上代碼:

1

2

3

4

5

6

7

8

9

file_object = open("d:/2.txt","wb")

?

# '\n' 是文件I/O中的換行符,寫完文件之后,自動換行

file_object.write(b"1234567\n")

# 注意單引號和雙引號的配合使用

file_object.write(b"file_object.write(b'sad')\n")

file_object.write(b"python \n")

?

file_object.close()

d:/2.txt 的內容如下:

1

2

3

1234567

file_object.write(b'sad')

python

注意:寫入方式“wb”?,每次寫入文件都會覆蓋上一次的內容,即寫入之前的內容會被清空;

?

五.文件偏移 seek

有人看了上面read()函數的示例代碼可能會覺得頻繁的打開和關閉文件會比較麻煩。那么僅僅打開和關閉文件一次,通過文件的偏移也能完成上述功能,文件的偏移使用?seek()?函數 。一般而言,seek()函數和tell()函數都搭配使用:

1.file.seek([offset],[whence])?— whence 表示偏移的位置,0代表從文件開頭開始算起,1代表從當前位置開始算起,2代表從文件末尾算起;offset 表示相對whence 偏移多少個字節;

2.file.tell()?— 相對于文件開始位置,當前偏移的字節數,該函數也可以用來計算整個文件的bytes長度;

注意:一般只要調用read/readline/readlines/write等函數,文件指針會自動發生偏移。

使用上面兩個函數的示例代碼如下:

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

file_object = open("d:/2.txt","rb")

?

# 獲取當前的文件偏移,由于還沒開始讀取內容,偏移量等于 0

count = file_object.tell()

print(count)

# 讀取文本所有數據內容,文件自動偏移到文件末尾

contents = file_object.read()

# 獲取整個文件的偏移量 ,實際上就是文件內容的大小

count = file_object.tell()

print(count)

# 將文件指針偏移到文件開始位置

file_object.seek(0,0)

# 讀取一行數據,按道理講應該是獲取第一行數據

contents = file_object.readline()

print(contents.decode())

# 獲取當前偏移量

count = file_object.tell()

print(count)

# 繼續讀取一行數據

contents = file_object.readline()

print(contents.decode())

# 獲取當前偏移量

count = file_object.tell()

print(count)

file_object.close()

輸出內容:

1

2

3

4

5

6

0

474

python教程 - 猿說python 第一行數據 www.shuopython.com

68

python教程 - 猿說python 第二行數據 www.shuopython.com

136

?

六.重點總結

1.file.read( [count] )函數可以設置讀取指定的長度,例如:只讀取10個字符read(10);

2.file.readlines()返回值是列表,并非bytes類型,而列表中的每一個元素都是文件中的一行數據,類型是bytes類型;

3.如果文件讀取的內容含有中文,需要通過函數decode()解碼轉為字符串,decode()默認為utf-8解碼;

4.文件open之后記得close,養成良好的書寫習慣;

?

?

猜你喜歡:

1.python列表推導式

2.python字典推導式

3.python return邏輯運算

?

轉載請注明:猿說Python???python文件讀寫操作


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安徽省| 大荔县| 石狮市| 资兴市| 安宁市| 新邵县| 满城县| 博乐市| 双桥区| 台州市| 田林县| 兴隆县| 桑植县| 澄迈县| 翼城县| 郧西县| 乡城县| 青岛市| 淅川县| 黄陵县| 壤塘县| 彭阳县| 屏东县| 岫岩| 高台县| 永清县| 丰原市| 石家庄市| 阿拉尔市| 富蕴县| 蒙阴县| 福安市| 三河市| 德江县| 南安市| 伊通| 星子县| 广西| 宁波市| 阿瓦提县| 安达市|