ptyhon之路day3-文件處理及函數1

文件處理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']()

相關文章
相關標籤/搜索