python基礎---文件處理
文件處理
f=open(‘文件’,’r’) 打開一個文件
f.close() 關閉文件,相當於保存
1、字符編碼
在文件處理過程中,首先有一個重要的概念,就是字符編碼
字符編碼:把人類的字符編譯成計算機能認識的數字
字符編碼表:就是一張字符與數字對應關系的表
ascii
gbk
utf-8 (硬盤中常用編碼)
unicode (內存中常用編碼)
unicode ---->encode(‘utf-8’) 編碼----> bytes
bytes ----> decode(‘utf-8’)解碼 ----> Unicode
原則:字符以什麽格式編譯的,就要以什麽格式解碼
python3中的字符串分為兩種
x=‘egon‘ 默認存為unicode
y=x.encode(‘utf-8‘) 使用encode編碼為bytes
python2中字符串也分為兩種
x=u‘egon‘ 加u表示存為Unicode格式,與python3的字符串一樣
y=‘alex‘ 默認存為bytes
2、文件模式
r 文本模式的讀,在文件不存在,不會創建新文件
w 文本模式的寫,文件存在則清空,不存在則創建
a 文本模式的追加,文件存在光標跳到文件末尾,文件不存在創建
rb 即直接從硬盤中讀取
wb 以二進制寫模式打開
ab 以二進制追加模式打開
r+ 讀的時候可寫
w+ 寫的時候可讀
a+ 追加時可讀寫
a. r模式
f.read() #一次性讀取文本中全部的內容,以字符串的形式返回結果
read()的使用:
read(3) #文件打開方式為文本模式時,代表讀取3個字符
#文件打開方式為b模式時,代表讀取3個字節
#unicode格式中3個字節=1個字符
控制光標的移動(都是以字節為單位):
f.seek() #控制光標移動幾個字節
有三種模式:
0
1 b模式下運行,以當前光標所在的位置為參照物
2 b模式下運行,以最後一個字節為參照物
練習:模擬tail –faccess.log
# python3 tail.py -f access.log
import time
import sys
with open(r‘%s‘ % sys.argv[2], ‘rb‘) as f:
f.seek(0, 2)
while True:
line = f.readline()
if line:
print(line.decode(‘utf-8‘),end=‘‘)
else:
time.sleep(0.2)
truncate() #文件的打開方式為可寫,從文件開頭開始截取,留下指定字節之後的字節
f.readline() #只讀取文本第一行的內容,以字符串的形式返回結果
f.readlines() #讀取文本所有內容,並且以數列的格式返回結果,一般配合for in使用
f.readble() #判斷文件是否有讀的權限,返回布爾值
b. w模式
f.write() #寫入文件,換行需要手動寫換行符\n
f.writelines() #一次寫入多行
c. a模式
f.tell() #查看光標位置
with open(‘文件’,’w’,encoding=’utf-8’) as f:
f.write(‘11111\n’) #會把文件的內容賦值給f,執行完畢會自動close
python中把腳本後的參數傳入腳本內的方法:
import sys
print(sys.argv)
一個cp文件的python小腳本
import sys
#python3 copy.py source.file target.file
if len(sys.argv) < 3:
print(‘Usage:python3 copy.py source.file target.file‘)
sys.exit()
#r‘C:\Users\Administrator\PycharmProjects\python18期周末班\day3\test.jpg‘
with open(r‘%s‘ %sys.argv[1],‘rb‘) as read_f,\
open(r‘%s‘ %sys.argv[2],‘wb‘) as write_f:
for line in read_f:
write_f.write(line)
本文出自 “lyndon” 博客,請務必保留此出處http://lyndon.blog.51cto.com/11474010/1948655
python基礎---文件處理