1. ⽂件處理
⽂件的處理包括讀⽂件和寫⽂件,讀寫⽂件就是請求作業系統開啟⼀個⽂件物件,然後,通過作業系統提供的接⼝從這個⽂件物件中讀取資料(讀⽂件),或者把資料寫⼊這個⽂件物件(寫⽂件)。
1.1 ⽂件讀取
⽂件讀取可分為以下步驟:
#開啟⽂件
fp =
open
('qfile.txt'
,'r'
,encoding=
'utf-8'
)#讀取⽂件全部內容
#content = fp.read()
#print(content)
#讀取指定字元數,包括⾏尾的換⾏符\n
# print(fp.read(20))
#讀取⼀⾏
# print(fp.readline(5)) #讀取指定字元數
# print(fp.readline()) #讀取⼀整⾏,直到碰到⼀個\n
#讀取所有⾏,返回列表
# print(fp.readlines())
#關閉⽂件
fp.close(
)
#由於⽂件讀寫時都有可能產⽣ioerror,⼀旦出錯,後⾯的f.close()就不會調⽤。
# 所以,為了保證⽆論是否出錯都能正確地關閉⽂件,我們可以使⽤try ...
finally來實現:
# try:
# fp = open('qfile.txt','r',encoding='utf-8')
# print(fp.readlines())
# finally:
# fp.close()
#可以簡寫為:
#with語句會⾃動調⽤close⽅法關閉⽂件
with
open
('qfile.txt'
,'r'
,encoding=
'utf-8'
)as fp:
print
(fp.readline(
))
#fread()和freadlines()會⼀次讀⼊⽂件全部內容,如果⽂件太⼤,會直接耗盡記憶體
的,因為⽂件物件可迭代,所以可以⽤for迴圈遍歷⽂件讀取
with
open
('qfile.txt'
,'r'
,encoding=
'utf-8'
)as fp:
for line in fp:
print
(line.strip())
#注意⽆論是read、readline、readlines都會
讀⼊⾏末的\n,所以需要⼿動剔除\n
1.2 寫⽂件
path =
"file11.txt"
#1.開啟⽂件
f =open
(path,
"w",encoding=
"utf-8"
)#2.寫⼊內容,將內容寫⼊到緩衝區
#不會⾃動換⾏,需要換⾏的話,需要在字串末尾新增換⾏符
f.write("whatever is worth doing is worth doing well該⾏很驕傲很關鍵
\n")
#3.重新整理緩衝區【加速資料的流動,保證緩衝區的流暢】
f.flush(
)#4.關閉⽂件 關閉⽂件也會重新整理緩衝區
f.close(
)#簡寫⽅式:可以不⽤⼿動調⽤close
with
open
(path,
"w",encoding=
"utf-8"
)as f1:
f.write("whatever is worth doing is worth doing well該⾏很驕傲很關
鍵")
1.3 移動⽂件指標
⽂件是順序向後讀寫的,如果想要移動⽂件指標,可以使⽤seek⽅法:
file_obj.seek(offset,whence=0)
功能:移動⽂件指標
引數:offset 是偏移量,正數表示從⽂件開頭向⽂件末尾移動,負數相反。
whence : ⽂件指標的位置,可選引數,值可以是
seek_set or 0 表示⽂件開頭位置,是預設值
seek_cur or 1 表示當前位置(不能使⽤)
seek_end or 2 ⽂件末尾位置(不能使⽤)
返回值:⽆
#1.txt內容:hello world
with
open
('1.txt'
,'r'
,encoding=
'utf-8'
)as fp:
fp.seek(5)
#移動到hello後的空格位置
print
(fp.read(3)
)#wo
fp.seek(0)
#移動到開頭
print
(fp.read(5)
)#hello
print
(fp.tell())
#tell()顯示當前指標位置
2.csv⽂件操作
逗號分隔值(comma-separated values,csv),其⽂件以純⽂本形式儲存**資料(數字和⽂本),⽂件的每⼀⾏都是⼀個資料記錄。每個記錄由⼀個或多個字段組成,⽤逗號分隔。使⽤逗號作為字段分隔符是此⽂件格式的名稱的**,因為分隔字元也可以不是逗號,有時也稱為字元分隔值。
在windows下,csv⽂件可以通過記事本,excel,notepad++,editplus等開啟
import csv
with
open
(r'csv\winequality-red.csv'
)as fp:
#1.開啟⽂件
#delimiter指定分隔符
csv_reader = csv.reader(fp,delimiter=
';')
#2.獲取csv讀取器
header =
next
(csv_reader)
#獲取第⼀⾏的標題
print
(header)
for line in csv_reader:
#3.遍歷所有的⾏
print
(line)
2.2 寫⼊csv
import csv
l1 =[[
1,2,
3],[
4,5,
6],[
7,8,
9]]#開啟⽂件時,要新增newline=''引數,否則會多⼀個空⾏
with
open
('1.csv'
,'w'
,newline='')
as fp:
#1.開啟⽂件
#delimiter='\t'指定資料分隔符
csv_writer = csv.writer(fp,delimiter=
'\t'
)#2.獲取writer
for line in l1:
csv_writer.writerow(line)
#3.寫⼊⽂件
python基礎(九) 檔案
file open file path,mode r 其中file path為檔案路徑 絕對路徑和相對路徑都是可以的 mode是檔案的開啟方式。open 函式會返回乙個檔案物件,我們可以通過這個檔案物件來操作檔案。file.flush 重新整理緩衝區。file.close 關閉檔案。引數值開啟方式 ...
python基礎九 檔案和異常
讀取整個檔案 with open pi digits.txt as file object contents file object.read print contents.rstrip 注 with的用法 讓檔案妥善地開啟和關閉。rstrip 函式 消除空行 使用檔案的內容 with open t...
python學習(九) 檔案操作
1 檔案開啟 1.開啟檔案,得到檔案控制代碼並賦值給乙個變數 f open a.txt r encoding utf 8 預設開啟模式就為r open預設編碼為gbk r,w,a 2.通過控制代碼對檔案進行操作 data f.read 3.關閉檔案 f.close 1 讀取 f.readable 是...