1. 程式人生 > >python基礎---文件處理

python基礎---文件處理

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 即直接從硬盤中讀取

bytes

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基礎---文件處理