1.4.0 Python文件操做

1、文件處理流程

1.打開文件,獲得文件句柄並賦值給一個變量 2.經過句柄對文件進行操做 3.關閉文件 打開模式: r 模式,默認模式,文件不存在則報錯 w 模式,文件不存在則建立,文件存在則覆蓋 a 模式,文件不存在則建立,文件存在則不會覆蓋,寫內容會以追加的方式寫(寫日誌文件的時候經常使用),追加模式是一種特殊的寫模式 b(rb,wb,ab)模式:二進制模式,不用加encoding:utf-8bash

f=open('c.txt','rb')  #只讀模式打開c.txt文件,句柄爲f
print(f.read())  #讀取整個文檔
print(f.read().decode())
f=open('d.txt','wb')  #二進制只寫方式打開d.txt
f.write('啦啦啦'.encode('utf-8'))
f.close()
複製代碼

2、基本操做

1.文件打開模式 文件句柄=open('文件路徑',‘模式’) 打開文件時,須要指定文件路徑和以什麼方式打開文件。 打開文件的模式有: r ,只讀模式【默認模式,文件必須存在,不存在則拋出異常】 w,只寫模式【不可讀;不存在則建立;存在則清空內容】 x, 只寫模式【不可讀;不存在則建立,存在則報錯】 a, 追加模式【可讀; 不存在則建立;存在則只追加內容】 只讀模式工具

f=open(r'c.txt',encoding='utf-8')
print('====>1',f.read())
print('====>2',f.read())
print(f.readable())
print(f.readline(),end='')
print(f.readline())
print("="*20)
print(f.read())
print(f.readlines())
f.close()
複製代碼

寫模式:文件不存在則建立,文件存在則覆蓋原有的測試

f=open("new.py",'w',encoding='utf-8')
f.write('1111111111\n')
f.writelines(['2222\n','2222548\n','978646\n'])
f.close()
複製代碼

追加模式:文件不存在則建立,文件存在不會覆蓋,寫內容是追加的方式寫ui

f=open('new.py','a',encoding='utf-8')
f.write('nishishui\n')
f.writelines(['aa\n','bb\n'])
f.close()
複製代碼

"+" 表示能夠同時讀寫某個文件編碼

r+, 讀寫【可讀,可寫】 w+,寫讀【可讀,可寫】 x+ ,寫讀【可讀,可寫】 a+, 寫讀【可讀,可寫】spa

"b"表示以==字節==的方式操做日誌

rb 或 r+b wb 或 w+b xb 或 w+b ab 或 a+b ==注:以b方式打開時,讀取到的內容是字節類型,寫入時也須要提供字節類型,不能指定編碼==code

練習,利用b模式,編寫一個cp工具,要求以下: 既能夠拷貝文本又能夠拷貝視頻,圖片等文件視頻

## 二進制讀模式
f=open('1.jpg','rb')
data=f.read()
print(data)
## 二進制寫模式
f=open('2.jpg','wb')
f.write(data)
print(data)
複製代碼

3、經常使用寫法

寫模式圖片

with open('a.txt','w')  as  f:
  f.write('要寫入的信息')
複製代碼

拷貝操做

with open('a.txt','r')  as rf,open('b.txt','w')  as  wf:
  data=read_f.read()
  write_f.write(data)
複製代碼

四,文件修改

import os
with open('a.txt','r',encoding='utf-8') as read_f,open('a.txt.swap','w',encoding='utf-8') as write_f:
    for line in read_f:
        write_f.write(line)
os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')
複製代碼

5、文件內光標移動

一: read(3):   1. 文件打開方式爲文本模式時,表明讀取3個字符   2. 文件打開方式爲b模式時,表明讀取3個字節 二: 其他的文件內光標移動都是以字節爲單位如seek,tell,truncate ==注意:==   1. seek有三種移動方式0,1,2,其中1和2必須在b模式下進行,但不管哪一種模式,都是以bytes爲單位移動的    seek控制光標的移動,是以文件開頭做爲參照的。    tell當前光標的位置   2. truncate是截斷文件,截斷必須是寫模式,可是不能用w或w+等方式打開,由於那樣直接清空文件了,因此truncate要在r+或a或a+等模式下測試效果

import time
with open('test.txt','rb') as f:
    f.seek(0,2)
    while True:
        line=f.readline()
        if line:
            print(line.decode('utf-8'))
        else:
            time.sleep(0.2)
複製代碼
相關文章
相關標籤/搜索