精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

深入Python中的文件操作

開發(fā) 后端
任何語言都離不開對(duì)文件的操作,那么Python語言是如何來操作和管理文件的。

[[350542]]

 任何語言都離不開對(duì)文件的操作,那么Python語言是如何來操作和管理文件的。

編碼方式

編碼方式的歷史大致為ASCII ->gb2312->unicode->utf-8,期間具體詳細(xì)信息可以百度

來個(gè)編碼解碼的小例子先,記住中文可以進(jìn)行GBK和utf-8編碼,在GBk一個(gè)中文字符對(duì)應(yīng)兩個(gè)字節(jié),在utf-8一個(gè)中文字符對(duì)應(yīng)三個(gè)字節(jié),中文不能進(jìn)行ASCII編碼。

  1. >>> '劉潤(rùn)森'.encode('GBK'
  2. b'\xc1\xf5\xc8\xf3\xc9\xad' 
  3. >>> '劉潤(rùn)森'.encode('ascii'
  4. Traceback (most recent call last): 
  5.   File "<stdin>", line 1, in <module> 
  6. UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128) 
  7. >>> 'Runsen'.encode('ascii'
  8. b'Runsen' 
  9. >>> "劉潤(rùn)森".encode('utf-8'
  10. b'\xe5\x88\x98\xe6\xb6\xa6\xe6\xa3\xae' 
  11. >>> '劉潤(rùn)森'.encode('GBK').decode('GBK'
  12. '劉潤(rùn)森' 
  13. >>> '劉潤(rùn)森'.encode('GBK').decode('utf-8'
  14. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 0: invalid start byte 

如果編碼解碼格式不一致可能會(huì)出現(xiàn)亂碼,encode表示編碼,decode表示解碼。

 

文件操作的API

下面是Python文件操作的具體的API。

打開文件

Python的open()函數(shù)打開一個(gè)文件時(shí),有若干個(gè)參數(shù)可用。然而,最常用的參數(shù)只有前兩個(gè)。

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)注意,第一個(gè)是強(qiáng)制性的,其余的是可選的。如果不添加mode參數(shù),文件將在Python中以只讀模式打開。

 

encoding:可以不寫。不寫參數(shù),默認(rèn)的編碼本是操作系統(tǒng)默認(rèn)的編碼本。windows默認(rèn)gbk,linux默認(rèn)utf-8,mac默認(rèn)utf-8。

  1. f=open('test.txt',encoding='utf-8')   #打開文件 
  2. data=f.read()  #讀取文件 
  3. print(data) 
  4. f.close() #關(guān)閉文件       

mode

讀取文件

代碼中用到的文件文件操作的1.txt 文件內(nèi)容如下:

  1. 關(guān)注《Python之王》公眾號(hào) 
  2. 作者:Runsen 

readline(),使用該方法時(shí),需要指定打開文件的模式為r或者r+;

 

readlines(),讀取全部行.返回一個(gè)列表,列表中的每個(gè)元素是原文件的每一行。如果文件很大,占內(nèi)存,容易崩盤。

  1. # 打開文件進(jìn)行讀取 
  2. f = open("1.txt","r",encoding='utf-8'
  3. # 根據(jù)大小讀取文件內(nèi)容 
  4. print('輸出來自 read() 方法\n',f.read(2048)) 
  5. # 關(guān)閉文件 
  6. f.close() 
  7. # 打開文件進(jìn)行讀寫 
  8. f = open("1.txt","r+",encoding='utf-8'
  9. # 讀取第2個(gè)字和第2行行的文件內(nèi)容 
  10. print('輸出來自 readline() 方法\n',f.readline(2)) 
  11. print('輸出來自 readlines() 方法\n',f.readlines(2)) 
  12. # 關(guān)閉文件 
  13. f.close() 
  14. # 打開文件進(jìn)行讀取和附加 
  15. f = open("1.txt","r",encoding='utf-8'
  16. # 打開文件進(jìn)行讀取和附加 
  17. print('輸出來自 readlines() 方法\n',f.readlines()) 
  18. # 關(guān)閉文件 
  19. f.close() 
  20.  
  21. # 輸出如下 
  22. 輸出來自 read() 方法 
  23.  關(guān)注《Python之王》公眾號(hào) 
  24. 作者:Runsen 
  25. 輸出來自 readline() 方法 
  26.  關(guān)注 
  27. 輸出來自 readlines() 方法 
  28.  ['《Python之王》公眾號(hào)\n'
  29. 輸出來自 readlines() 方法 
  30.  ['關(guān)注《Python之王》公眾號(hào)\n''作者:Runsen'

寫入文件

下面只介紹清除寫 w和追加寫 a

案例:將關(guān)注《Python之王》公眾號(hào)寫入 test.txt 文件中

  1. # mode=w 沒有文件就創(chuàng)建,有就清除內(nèi)容,小心使用 
  2. with open('test.txt''w', encoding='utf-8'as fb: 
  3.       fb.write('關(guān)注《Python之王》公眾號(hào)\n')   

下面再將作者:Runsen寫入test.txt 文件中

  1. with open('test.txt''w', encoding='utf-8'as fb: 
  2.       fb.write('作者:Runsen\n')   

運(yùn)行后會(huì)發(fā)現(xiàn)之前寫的關(guān)注《Python之王》公眾號(hào)內(nèi)容修改為作者:Runsen,因?yàn)? w模式會(huì)清除原文件內(nèi)容,所以小心使用。只要使用了w,就要一次性寫完。

追加寫 a

 

案例:將靜夜思這首詩(shī)追加到 test.txt 文件中

  1. # mode=a 追加到文件的最后 
  2. with open('test.txt''a', encoding='utf-8'as fb: 
  3.       fb.write('關(guān)注《Python之王》公眾號(hào)\n')   
  4. with open('test.txt''a'encoding='utf-8'as fb: 
  5.       fb.write('作者:Runsen\n')       

指針操作

事物或資源都是以文件的形式存在,比如消息、共享內(nèi)存、連接等,句柄可以理解為指向這些文件的指針。

句柄(handle)是一個(gè)來自編譯原理的術(shù)語,指的是一個(gè)句子中最先被規(guī)約的部分,所以帶有一個(gè)「句」字。

句柄的作用就是定位,兩個(gè)APi還是tell和seek。

tell返回文件對(duì)象在文件中的當(dāng)前位置,seek將文件對(duì)象移動(dòng)到指定的位置,傳入的參數(shù)是offset ,表示移動(dòng)的偏移量。

 

下面通過示例對(duì)上述函數(shù)作進(jìn)一步了解,如下所示:

  1. with open('test.txt''rb+'as f: 
  2.     f.write(b'Runsen'
  3.     # 文件對(duì)象位置 
  4.     print(f.tell()) 
  5.     # 移動(dòng)到文件的第四個(gè)字節(jié) 
  6.     f.seek(3) 
  7.     # 讀取一個(gè)字節(jié),文件對(duì)象向后移動(dòng)一位 
  8.     print(f.read(1)) 
  9.     print(f.tell()) 
  10.     # whence 為可選參數(shù),值為 0 表示從文件開頭起算(默認(rèn)值)、值為 1 表示使用當(dāng)前文件位置、值為 2 表示使用文件末尾作為參考點(diǎn) 
  11.     # 移動(dòng)到倒數(shù)第二個(gè)字節(jié) 
  12.     f.seek(-2, 2) 
  13.     print(f.tell()) 
  14.     print(f.read(1)) 
  15.      
  16. #輸出如下 
  17. b's' 
  18. 50 

上下文管理

我們會(huì)進(jìn)行這樣的操作:打開文件,讀寫,關(guān)閉文件。程序員經(jīng)常會(huì)忘記關(guān)閉文件。上下文管理器可以在不需要文件的時(shí)候,自動(dòng)關(guān)閉文件,使用with open即可。

  1. with context manager 
  2. with open("new.txt""w"as f: 
  3.     print(f.closed) 
  4.     f.write("Hello World!"
  5. print(f.closed) 
  6.  
  7. #輸出如下 
  8. False 
  9. True 

如何批量讀取多個(gè)文件

下面,批量讀取某文件夾下的txt文件

  1. file_list = ['1.txt''2.txt''3.txt','4.txt'
  2. for path in file_list: 
  3.     with open(path, encoding='utf-8'as f: 
  4.         for line in f: 
  5.             print(line) 

下面將批量讀取文件夾下的txt文件的內(nèi)容,合并內(nèi)容到一個(gè)新文件5.txt中,具體實(shí)現(xiàn)的代碼如下。

  1. import os 
  2. #獲取目標(biāo)文件夾的路徑 
  3. filedir = os.getcwd()+'\\'+'\\txt' 
  4. #獲取當(dāng)前文件夾中的文件名稱列表 
  5. filenames = [] 
  6. for i in os.listdir(filedir): 
  7.     if i.split(".")[-1] == 'txt'
  8.         filenames.append(i) 
  9. #打開當(dāng)前目錄下的5.txt文件,如果沒有則創(chuàng)建 
  10. f = open('5.txt','w'
  11. #先遍歷文件名 
  12. for filename in filenames: 
  13.     filepath = filedir+'\\'+filename 
  14.     #遍歷單個(gè)文件,讀取行數(shù) 
  15.     for line in open(filepath,encoding='utf-8'): 
  16.         f.writelines(line) 
  17.         f.write('\n'
  18. #關(guān)閉文件 
  19. f.close() 

其實(shí)在Window中只需要cd 至目標(biāo)文件夾,即你需要將所有想要合并的txt文件添加至目標(biāo)文件夾中,執(zhí)行如下DOS命令 type *.txt > C:\目標(biāo)路徑\合并后的文件名.txt

練習(xí)

題目:創(chuàng)建文件data.txt,文件共100000行,每行存放一個(gè)1~100之間的整數(shù),題目來源:牛客

  1. import random 
  2.  
  3. f = open(‘data.txt’,‘w+’) 
  4. for i in range(100000): 
  5.   f.write(str(random.randint(1,100)) + ‘\n’) 
  6.   f.seek(0) 
  7.   print(f.read()) 
  8.   f.close() 

題目:生成100個(gè)MAC地址并寫入文件中,MAC地址前6位(16進(jìn)制)為01-AF-3B,題目來源:牛客

  1. import random 
  2. import string 
  3.  
  4. def create_mac(): 
  5.   MAC='01-AF-3B' 
  6.   hex_num =string.hexdigits #0123456789abcdefABCDEF 
  7.   for i in range(3): 
  8.     n = random.sample(hex_num,2) 
  9.     sn = '-' + ''.join(n).upper() 
  10.     MAC += sn 
  11.   return MAC 
  12.  
  13. def main(): 
  14.   with open('mac.txt','w'as f: 
  15.     for i in range(100): 
  16.       mac = create_mac() 
  17.       print(mac) 
  18.       f.write(mac+'\n'
  19.  
  20. main() 

本文已收錄 GitHub,傳送門~[1] ,里面更有大廠面試完整考點(diǎn),歡迎 Star。

責(zé)任編輯:姜華 來源: Python之王
相關(guān)推薦

2020-12-26 16:51:12

Python操作符開發(fā)

2023-10-23 12:35:36

Golang追加操作

2020-11-06 13:42:59

itertools

2020-11-11 08:24:06

collection

2023-11-27 15:08:52

Python編程語言

2020-11-12 08:52:16

Python

2010-03-23 16:30:47

Python文件復(fù)制

2020-09-17 12:34:54

Python文件操作

2018-05-28 09:20:10

Python迭代for循環(huán)

2016-08-31 15:50:50

PythonThreadLocal變量

2024-05-08 13:49:10

MongoDB版本系統(tǒng)

2024-03-15 09:44:17

WPFDispatcherUI線程

2012-11-23 16:46:12

LinuxVim

2023-11-30 16:05:17

2010-04-08 16:49:36

Unix操作系統(tǒng)

2020-11-10 08:45:35

Python

2024-10-12 15:18:05

PythonAPI操作系統(tǒng)

2010-03-23 13:16:14

Python代碼加密

2016-08-31 15:41:19

PythonThreadLoca變量

2020-11-04 09:23:57

Python
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

黄一区二区三区| 日韩最新在线| 亚洲人一二三区| 99精品国产一区二区| 国产一级片免费观看| 日韩欧美中文字幕电影| 欧美视频一区二区三区四区| 经典三级在线视频| 天天爽夜夜爽夜夜爽| 日本网站在线观看一区二区三区 | 欧美丝袜一区| 欧美一区二区三区四区视频| 91精品国产91久久久久麻豆 主演| 国产一级在线| 国产在线看一区| 欧洲美女7788成人免费视频| 国产3级在线观看| 国产图片一区| 制服丝袜亚洲播放| 欧美亚洲一二三区| 成人在线视频亚洲| 国产婷婷色一区二区三区四区| 成人国产精品久久久| 成人毛片18女人毛片| 久久久久亚洲| 亚洲人成自拍网站| 性活交片大全免费看| 成人深夜福利| 欧美性猛交xxxx免费看久久久| 男同互操gay射视频在线看| 欧美另类自拍| 成人av在线资源网站| 91中文精品字幕在线视频| 国产亚洲久一区二区| 一本色道久久| 欧美国产激情18| 91精品少妇一区二区三区蜜桃臀| 欧洲专线二区三区| 亚洲国产婷婷香蕉久久久久久| 伊人免费视频二| 九九热这里有精品| 在线欧美日韩国产| 国产又大又硬又粗| 欧美gv在线| 亚洲成av人片一区二区三区| 久久久久亚洲av无码专区喷水| 在线观看av黄网站永久| 99麻豆久久久国产精品免费| 91文字幕巨乱亚洲香蕉| 国产美女主播在线观看| 美女脱光内衣内裤视频久久影院| 国产999视频| 成人毛片18女人毛片| 亚洲精品欧洲| 97avcom| 国产乡下妇女做爰| 91久久综合| 91禁外国网站| 九九热精品视频在线| 中文精品在线| 欧美综合一区第一页| 美女又爽又黄免费视频| 日韩在线卡一卡二| 国产成人极品视频| 这里只有精品免费视频| 男人的j进女人的j一区| 国产日韩欧美91| 一本到在线视频| 国产一区二区毛片| 97视频资源在线观看| 亚洲精品一区二区三区不卡| 成人黄色综合网站| 蜜桃网站成人| a√资源在线| 欧美极品美女视频| 日本丰满少妇黄大片在线观看| 黄色大片在线播放| 一区二区三区免费| 欧美一级免费播放| 亚洲精品国产精品国产| 欧美日韩综合一区| 色偷偷中文字幕| 午夜男人的天堂| 免费观看精品视频| 黄页在线观看免费| 偷拍亚洲欧洲综合| 久久99999| 日本一区二区三区视频在线看 | 99久久精品国产观看| 久久大片网站| 秋霞a级毛片在线看| 亚洲一区二区三区四区的| 日本在线观看a| www.久久久.com| 亚洲国产中文字幕在线观看 | 《视频一区视频二区| 麻豆映画在线观看| 自由日本语热亚洲人| 在线电影院国产精品| 尤物网站在线观看| 精品一区av| 欧美黑人xxxⅹ高潮交| 国产寡妇亲子伦一区二区三区四区| 蜜臀av性久久久久蜜臀aⅴ四虎| 96久久精品| 国际av在线| 一区二区三区在线视频播放| www.com毛片| 在线免费观看亚洲| 亚洲人成在线观看网站高清| 一区二区视频免费看| 久久一区欧美| 成人动漫视频在线观看免费| 九色视频在线播放| 亚洲一区二区三区在线播放| 性欧美1819| 日本欧美高清| 久久69精品久久久久久久电影好| 五月婷婷中文字幕| 国产成人在线视频播放| 日韩精品最新在线观看| 波多野结衣在线播放| 欧美日本免费一区二区三区| 粉嫩av懂色av蜜臀av分享| 亚洲一区色图| 国产精品美女免费| 日韩精品系列| 亚洲一级在线观看| 99视频在线观看视频| 成人国产精品一级毛片视频| 2019亚洲日韩新视频| 精品国产乱码久久久久久蜜臀网站| 国产无人区一区二区三区| 九九热只有这里有精品| 亚洲精品三区| 最新69国产成人精品视频免费| 日韩欧美高清在线观看| 成人晚上爱看视频| 男人草女人视频| 精品国产一级| 久久精品99久久久香蕉| 中文天堂在线资源| 久久久不卡网国产精品二区| 免费av观看网址| 久久99国产精品久久99大师| 免费成人高清视频| 国产又粗又猛又黄又爽| 18欧美乱大交hd1984| 韩国一区二区av| 婷婷国产精品| 欧美一区二区三区图| 亚洲欧美日韩免费| 欧美日韩免费在线观看| 99久久免费看精品国产一区| 91久久在线| 国产在线欧美日韩| av电影在线免费| 亚洲国产欧美自拍| 男人的天堂一区| 91年精品国产| 欧美激情国产精品日韩| 国产午夜一区| 国产精品影院在线观看| 欧美激情二区| 日韩欧美电影在线| 国产一级二级毛片| 成人免费黄色在线| 国产免费黄色av| 最近国产精品视频| 国产精品入口夜色视频大尺度| 高清在线观看av| 欧美日韩国产另类不卡| 91 在线视频| 国产精品性做久久久久久| 国产资源第一页| 国产无遮挡裸体免费久久| 国产91精品久久久久| 国产高清免费在线播放| 欧美日韩久久久一区| 一区二区三区四区五区| 丁香一区二区三区| 国语对白做受xxxxx在线中国| 欧美日韩高清| 99porn视频在线| 美女的胸无遮挡在线观看 | av亚洲在线| 91麻豆精品国产91久久久 | 国产成人短视频| 免费成人黄色| 精品99久久久久久| 亚洲国产精品无码久久久| 中文字幕亚洲精品在线观看| 亚洲精品乱码久久久久久蜜桃欧美| 亚洲国产午夜| 手机成人在线| av综合网址| 日本精品性网站在线观看| 91精品专区| 欧美大片在线观看一区| 在线永久看片免费的视频| 国产精品国产三级国产专播品爱网| 国产精品欧美性爱| 久久美女性网| youjizz.com在线观看| 国产亚洲一区二区三区啪| 亚洲一区久久久| 久久人体大尺度| 在线视频中文亚洲| www久久久com| 色国产综合视频| 欧美爱爱小视频| 国产欧美日本一区二区三区| av电影在线播放| 精品亚洲免费视频| 日韩精品视频久久| 黑丝一区二区三区| dy888午夜| 欧美综合一区| 麻豆传媒一区二区| 99久久人爽人人添人人澡 | 欧美a级大片在线| 国产极品jizzhd欧美| 爱草tv视频在线观看992| 久久激情视频免费观看| 成年在线电影| 精品亚洲精品福利线在观看| 精品国产伦一区二区三| 欧美日本一道本| 人人妻人人爽人人澡人人精品| 亚洲电影一级黄| 欧美三级在线免费观看| 国产精品嫩草99a| 制服 丝袜 综合 日韩 欧美| 成人黄色av电影| 性生活在线视频| 精品一区二区三区av| 老熟妇仑乱视频一区二区| 国产欧美激情| 成人性免费视频| 国自产拍偷拍福利精品免费一| 一本一生久久a久久精品综合蜜 | www成人在线视频| 97不卡在线视频| 国产美女情趣调教h一区二区| 久久成人综合视频| 黄网站在线播放| 日韩视频―中文字幕| av国产在线观看| 国产一区二区三区精品久久久| 欧美777四色影视在线 | 中文字幕99页| 成人在线视频首页| 三上悠亚 电影| 国产一本一道久久香蕉| 涩多多在线观看| 国产麻豆精品95视频| 国产在线a视频| 风间由美性色一区二区三区| 国产ts在线观看| 成人少妇影院yyyy| 亚洲国产果冻传媒av在线观看| 99久免费精品视频在线观看| 国产又粗又长又爽| 久久免费美女视频| 成年人在线免费看片| 国产精品五月天| 一级性生活免费视频| 亚洲男女毛片无遮挡| 麻豆91精品91久久久| 午夜影院在线观看欧美| 亚洲日本韩国在线| 日韩欧美中文第一页| 黄色av一区二区| 欧美精品久久久久久久多人混战| 99热这里只有精品1| 欧美精品一区二区久久婷婷| 欧美黄色小说| 日韩中文在线视频| 日本伦理一区二区| 5566成人精品视频免费| 国产一区二区三区影视| 91午夜在线播放| 精品伊人久久久| 日韩av在线一区二区三区| 亚洲经典一区| 内射国产内射夫妻免费频道| 久久亚洲精选| 伊人五月天婷婷| av在线不卡免费看| 粉嫩精品久久99综合一区| 尤物av一区二区| 国产91国语对白在线| 欧美一区中文字幕| 瑟瑟在线观看| 色妞色视频一区二区三区四区| 青草影视电视剧免费播放在线观看| 91av视频在线播放| www.久久爱.com| 欧美日韩综合精品| 欧美精品国产| www.99av.com| 成人午夜看片网址| 久久久久亚洲av无码a片| 亚洲综合图片区| 免费黄色片视频| 欧美videofree性高清杂交| 国产香蕉视频在线看| 久久久久久久久久久av| 国产伊人久久| 国产在线一区二区三区四区 | 国产1区2区3区中文字幕| 久久精品亚洲一区二区| 日本一级大毛片a一 | 1024手机在线视频| 色噜噜狠狠成人中文综合| 好吊色一区二区三区| 中文字幕亚洲二区| sis001欧美| 国产激情美女久久久久久吹潮| 98精品久久久久久久| aaa毛片在线观看| 99久久综合色| 久久艹精品视频| 3751色影院一区二区三区| 黄色的视频在线免费观看| 久久免费视频这里只有精品| 成人在线啊v| 亚洲mv在线看| 久久久久久婷| 国产肉体xxxx裸体784大胆| 玉足女爽爽91| 国产熟女一区二区三区四区| 色综合影院在线| 韩国女主播一区二区| 久久久久资源| av不卡在线| 最新国产精品自拍| 樱桃国产成人精品视频| 国产区精品在线| 色av中文字幕一区| 国产第一精品| 亚洲a∨一区二区三区| 日日夜夜免费精品| 日韩精品电影一区二区| 日韩欧美国产一区二区| 无码国产伦一区二区三区视频| 欧美国产日本在线| 成人av资源网址| 人妻少妇精品久久| av一区二区三区黑人| 久久免费在线观看视频| 日韩精品自拍偷拍| 亚洲小说区图片| 99久久久精品免费观看国产| 欧美日韩三级电影在线| 国产在线a视频| 亚洲国产欧美一区二区三区丁香婷| 午夜精品久久久久久久第一页按摩| 欧美俄罗斯性视频| av不卡一区| 日本xxxxxxxxxx75| 成人免费电影视频| 日韩 欧美 中文| 日韩精品在线视频美女| 吞精囗交69激情欧美| 香蕉久久免费影视| 久久精品国产99| 国产极品国产极品| 欧美mv日韩mv国产网站app| а√天堂中文在线资源8| 久久综合九色99| 欧美aaa在线| 91在线播放观看| 日韩电影免费观看在线观看| 黄在线观看免费网站ktv| 欧美视频观看一区| 激情欧美日韩一区二区| 美女毛片在线观看| 日韩精品免费看| 中韩乱幕日产无线码一区| 国产精品夜夜夜爽张柏芝| 丰满亚洲少妇av| aaaaaa毛片| 按摩亚洲人久久| 国产精品对白久久久久粗| 妞干网在线免费视频| 亚洲日本电影在线| 日中文字幕在线| 国产日本欧美一区| 影音先锋在线一区| 一区二区三区在线观看视频| 久久久久亚洲视频| 久久国产精品偷| 亲子伦视频一区二区三区| 337p粉嫩大胆噜噜噜鲁| 国产精品乱码人人做人人爱 | 国产污视频在线播放| 亚洲巨乳在线观看| 不卡免费追剧大全电视剧网站| 中文字幕在线观看视频免费|