文件處理python
文件處理流程windows
1 打開文件,獲得文件句柄並賦值給一個變量app
2 經過句柄對文件進行操做函數
3 關閉文件測試
1python中操做文件編碼
f = open('a.txt','r',encoding='gbk') #windows操做系統默認gbk編碼spa
open是打開文件 是向操做系統發起請求來打開一個文件操作系統
f 是應用程序存到內存中 f->打開文件對應着翻譯
f.read()code
r模式在文件沒有的時候 不會自動建立文件
b模式即直接從硬盤中讀取bytes
f=open('a.txt','rb')
print(f.read().decode('utf-8'))
w文本模式的寫
文本模式的寫 必須指定編碼,文件不存在建立,文件存在則清空(實際是建立一個新文件覆蓋掉)
f=open('a.txt','w',enconding='utf-8')
print(f.writable()) #TRUE 注:w只能寫 r只能讀
a文本模式的追加
文本模式的追加,文件不存在建立,文件存在光標默認在最後位置追加
文本追加須要使用光標 在光標的位置進行插入
f=open('b.txt','a',enconing='utf-8')
print(f.tell())
如何測試使用a模式下是否能寫
f.write('111\n') #FALSE
r+ w+ b+
讀的時候寫 寫的時候讀
rb模式即直接從硬盤讀取 編碼基本不用考慮
f=open('a.txt','rb')
wb 模式
f=open('a.txt','wb')
f.write('你好啊').encode('utf-8')
ab模式
也是寫模式 寫到最後,每次都須要encode操做才能寫入
能夠發現以前的操做都是open 並無關閉文件 這樣會致使內存溢出 並無回收,保證不佔操做系統資源
不論f.close()仍是其餘的都是向操做系統發送命令進行執行
接下來是with open
with open ('file.txt','w',enconding='utf-8')
f.write(‘1111\n’)
簡單copy程序
f=open('test.jpg','rb')
print(f.read())
with open ('test.jpg','rb') as read_f,open('test1.jpg','wb') as write_f
for line in read_f:
write_f.write(line)
-------------------
import sys
if len(sys.argv) <3:
print('copy.py source.file')
sys.exit()
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)
文件的其餘操做
f=open('a.txt','r',enconding='utf-8')
print(f.read(3)) #讀的字符 中文算一個 英文一個字母一個
f=open('a.txt','rb')
print(f.read(3).decode('utf-8')) #讀取三個字節
字符編碼:
什麼是字符編碼?
把人類的字符翻譯成計算機能認識的數字
字符編碼標常見
ascii
gbk
utf-8
unicode
unicode---->encode('utf-8') ---->bytes
bytes----->decode('utf-8')----unicode
encode編碼
decode解碼
原則:字符以什麼格式編譯的存,就要以什麼格式編碼取
ps:字符編碼在內存中的格式都是unicode,硬盤中是bytes
在python3中字符串分兩種
x='abc' 存成unicode
y=x.encode('utf-8') 存成bytes
1 什麼是函數?
2 爲何要用函數? 3 函數的分類:內置函數與自定義函數 4 如何自定義函數 語法 定義有參數函數,及有參函數的應用場景 定義無參數函數,及無參函數的應用場景 定義空函數,及空函數的應用場景 5 調用函數 如何調用函數 函數的返回值 函數參數的應用:形參和實參,位置參數,關鍵字參數,默認參數,*args,**kwargs
6 高階函數(函數對象)
#函數是第一類的對象:指的是函數能夠被當作數據傳遞
def foo():
print('from foo')
#1 被賦值
# f=foo
# print(f)
# f()
#2 能夠當作參數傳入
# def wrapper(func):
# # print(func)
# func()
# wrapper(foo)
#3 能夠當作函數的返回
def wrapper(func):
return func
# res=wrapper(foo)
# print(res)
#4 能夠當作容器類型的元素
# cmd_dic={# 'func':foo# }## print(cmd_dic)## cmd_dic['func']()