文本文件讀寫

一、文件的打開

1.普通文件:數(shù)據(jù)持久化的最簡單類型,僅僅在一個文件名下的字節(jié)流(流的意思是按照順序一個字節(jié)以個字節(jié)訪問),把數(shù)據(jù)從文件讀入內(nèi)存,從內(nèi)存寫入文件
1.1 open()函數(shù):基本語法如下圖:
f = open(filename[,mode[,buffering]])#帶有三個參數(shù)第一個是文件名,第二個mode意思是訪問模式對指定的文件要進行說明操作的意思,第三個參數(shù)是緩沖一般默認缺省為-1就可以了
f:open()返回文件對象
filename:文件的字符串名
mode:可選參數(shù),打開模式和文件類型
mode參數(shù)第一個字母表明對其的操作如下圖:
r:表示讀模式 #表示從文件中把數(shù)據(jù)讀出來
w:表示寫模式 #把內(nèi)存當中的一些數(shù)據(jù)寫到外層的文件當中
x:表示在文件不存在的情況下新創(chuàng)建并寫文件
a:表示在文件末尾追加寫內(nèi)容
+:表示讀寫模式,可以在讀寫之間來回切換
mode參數(shù)第二個字母表明對其的操作如下圖:
t:表示文本類型
b:表示二進制文件

二、文件的讀寫和訪問

1.文件的寫操作如下圖:
f.write(str)  #寫一個字符串到文件中
f.writelines(strlist)  #寫入字符串列表
2.文件的讀操作如下圖:
f.read() #如果不加任何參數(shù)它會把整個文件的所有內(nèi)容都讀到內(nèi)存中
f.readline():返回一行(一行讀完以后文件位置的指針會自動跳到下一行,如下次再調(diào)用readline就會把下一行讀出來,一直讀到文件結(jié)束)
f.readlines():返回所有行列并且把它放在列表當中去,列表當中的每一個元素就是一行
對文件的操作舉個例子如下圖:
>>> f = open('my.txt','w') #以w的形式把my.txt文件打開
>>> f.writelines(['apple\n','pie\n']) #在文件中寫入兩行字符串,python的writelines并不自動添加換行,所有需要在每行后面加一個換行符
>>> f.close() #關(guān)閉文件
>>> f=open('my.txt','r') #以r的形式把my.txt文件打開
>>> f.readlines() #把所以的行列讀入內(nèi)存中
['apple\n', 'pie\n'] #以列表的形式返回包括換行符也被保存下了,列表中的每一個元素都是一行,
>>> f.close()#關(guān)閉文件

三、文件的關(guān)閉

1.打開文件要記得關(guān)閉,關(guān)閉的作用是終止對外部文件的連接,同時將緩存區(qū)的數(shù)據(jù)刷新到硬盤上
2.文件的關(guān)閉直接調(diào)用(f.close)就可以了
3.使用上下文管理器(context manager),確保在退出后自動關(guān)閉文件如下圖所示:
with open('textfile','rt') as myfile:       #使用上下文管理器這里需要用with這個關(guān)鍵字,打開這個文件并對這個文件重新命名為myfile
      myfile.read()
      ...
      ...
      ...
在myfile后面有一個冒號所以后面的語句都需要縮進,而這些在with下面的語句不管對它做什么樣的操作,最后它都會自動關(guān)閉文件

四、結(jié)構(gòu)化文本文件:(csv)

1.c表示逗號的意思s表示分隔符v表示值的意思,即csv文件是以純文本文件的形式出現(xiàn)的以逗號分隔的文本文件。這里有幾點注意如下圖:
csv文件值沒有類型,所有值都是字符串
不能指定字體顏色等樣式
不能指定單元格的寬高,不能合并單元格
沒有多個工作表
不能嵌入圖像圖表
2.對csv文件的基本操作語法如下圖:

圖1、讀的操作reader、DictReader,這里的DictReader是對帶有表頭文件的讀取

import csv #首先調(diào)用csv這個模塊
re = csv.reader() #reader可以接受一個可迭代對象(比如csv文件),能返回一個生成器,可以從中解析出內(nèi)容。


import csv
re = csv.DictReader()
#使用方式與reader類似,也是有一個生成器可以逐行去訪問,但返回的每一個單元格都放在一個元組的值內(nèi)

圖2、寫的操作

import  csv
w = csv.writer() #當文件不存在時,自動生成,支持單行寫入和多行寫入
w.witerow(rows)


w = csv.Dictwriter() #以字典數(shù)據(jù)寫入
w.writeheader()
w.writerow(rows)

圖3、實例如下圖

import csv
with open('test1.csv','w',newline='') as f:    #以寫的方式打開test1.csv文件并重命名為f,newline='是為了去空格
    w = csv.writer(f)
    w.writerow(('name', 'tel', 'address', 'age')) #寫入內(nèi)容
    w.writerow(('zhang', 15111111111, 'beijing', 33))
    w.writerow(('li', 13822222222, 'wuhan', 28))
    w.writerow(('liu', 15933333333, 'hainan', 25))
    w.writerow(('rows',1110))
with open('test1.csv','r',newline='') as f: #以讀的方式打開文件
    reader = csv.reader(f)
    for i in reader:                        #讀取文件內(nèi)容
        print(i)

輸出

F:\j\venv\Scripts\python.exe F:/j/demo22.py
['name', 'tel', 'address', 'age']
['zhang', '15111111111', 'beijing', '33']
['li', '13822222222', 'wuhan', '28']
['liu', '15933333333', 'hainan', '25']
['rows', '1110']
Process finished with exit code 0

五、結(jié)構(gòu)化文本文件:Excel

1.openpyxl模塊:該模塊可以用來讀寫擴展名為xlsx/xlsm/xltx/xltm的文件

workbook類是對工作簿的抽象
worksheet類是對表格的抽象
cell類是對單元格的抽象文件寫操作

2.操作之前先導入第三方庫

安裝:pip install openpyx1
導庫:from openpyxl import workbook

3.創(chuàng)建Excel文件

一個workbook對象代表一個excel文檔,使用該方法創(chuàng)建一個worksheet對象后才能打開一個表,基本語法如下圖:

form openpyxl import workbook
wb = workbook()
ws = wb.active
4.讀取excel文件基本語法如下圖:
from openpyxl import load_workbook
wb = load_workbook(filename)
ws = wb.file.active
5.獲取單元格的信息基本語法如下圖:
1.獲取Cell對象
c = wb['sheet'] ['A1']
c = wb['sheet'].cell(row=1,column=1)
#獲取Cell對象之后可以獲取坐標和單元格的值
c.coordinate:返回單元格坐標
c.value:返回單元格的值
c.column:返回單元格所在列坐標

六、結(jié)構(gòu)化文本文件:PDF

1.處理pdf文件的庫:pyPDF2

pyPDF2包含了pdfFileReader、pdfFileMerger、pageobject和pdfFileWriter四個主要類,可以對PDF文件進行讀寫、分割、合并、文件轉(zhuǎn)換等多種操作,但是只能從PDF文檔中提取文本并返回為字符串,而無法提取圖像、圖表或其他媒體

2.讀取PDF文件基本語法如下圖:
readFile = open('test.pdf','rb') #用open打開獲得一個文件對象readFile
pdfFileReader = pdfFileReader (readFile)#用pdfFileReader這個類處理這個文件對象再返回給pdfFileReader
3.pdfFileReader類

getNumpages():計算PDF文件總頁數(shù)
getpage(index):檢索指定編號的頁面

4.PDF文件的寫操作基本語法如下圖:
writeFile = 'output.pdf'
pdfFileWriter = pdfFileWriter()
5.pdfFileWriter類

.addpage(pageobj):根據(jù)每頁返回的pageobject,寫入到文件

6.合并多個文檔基本語法如下圖:
pdf_merger = pdfFileMerger()
pdf_merger.append('py2018.pdf')
pdf_merger.merge(10,'insert.pdf')
pdf_merger.write('merge.pdf')
7.單個頁面操作:pageobject類

.extractText():按照順序提取文本
.getContents():訪問頁面內(nèi)容
.rotateClockwise(angle):順時針旋轉(zhuǎn)
.scale(sx,sy):改變頁面大小

這節(jié)內(nèi)容舉例不多,寫的不夠完善后續(xù)再完善不全
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,363評論 0 10
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,329評論 2 89
  • 轉(zhuǎn)自鏈接 目錄 1.認識NPOI 2.使用NPOI生成xls文件 2.1創(chuàng)建基本內(nèi)容 2.1.1創(chuàng)建Workboo...
    腿毛褲閱讀 11,174評論 1 3
  • 使用首先需要了解他的工作原理 1.POI結(jié)構(gòu)與常用類 (1)創(chuàng)建Workbook和Sheet (2)創(chuàng)建單元格 (...
    長城ol閱讀 8,761評論 2 25
  • “又是這個人?!?唐罕睜大眼睛看著屏幕上那個熟悉的紅色影子,按下了暫停鍵。 “健豪,你看那個穿紅衣服的人又出現(xiàn)了。...
    L的翅膀閱讀 962評論 7 13

友情鏈接更多精彩內(nèi)容