python操作程式 python檔案操作

2021-10-11 22:17:47 字數 4453 閱讀 8363

一、檔案處理流程

1.開啟檔案,得到檔案控制代碼並賦值給乙個變數

2.通過控制代碼對檔案進行操作

3.關閉檔案

r模式,預設模式,檔案不存在則報錯

w模式,檔案不存在則建立,檔案存在則覆蓋

a模式,檔案不存在則建立,檔案存在則不會覆蓋,寫內容會以追加的方式寫(寫日誌檔案的時候常用),追加模式是一種特殊的寫模式

b(rb,wb,ab)模式:不用加encoding:utf-8

f=open('c.txt','rb')#print(f.read())

print(f.read().decode())

f=open('d.txt','wb')

f.write('啦啦啦'.encode('utf-8'))

f.close()

二、基本操作

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()

#追加模式:檔案不存在則建立,檔案存在不會覆蓋,寫內容是追加的方式寫f=open('new.py','a',encoding='utf-8')f.write('nishishui\n')f.writelines(['aa\n','bb\n'])f.close()

"+" 表示可以同時讀寫某個檔案

r+, 讀寫【可讀,可寫】

w+,寫讀【可讀,可寫】

x+ ,寫讀【可讀,可寫】

a+, 寫讀【可讀,可寫】

"b"表示以位元組的方式操作

rb  或 r+b

wb 或 w+b

xb 或 w+b

ab 或 a+b

注:以b方式開啟時,讀取到的內容是位元組型別,寫入時也需要提供位元組型別,不能指定編碼

練習,利用b模式,編寫乙個cp工具,要求如下:

#b模式

三、上下文管理

1. with open('a.txt','w')  as  f:

pass

2.with open('a.txt','r')  as read_f,open('b.txt','w')  as  write_f:

data=read_f.read()

write_f.write(data)

四、檔案的修改

importos

with open('a.txt','r',encoding='utf-8') as read_f,\

open('a.txt.swap','w',encoding='utf-8') as write_f:for line inread_f:

write_f.write(line)

os.remove('a.txt')

os.rename('.a.txt.swap','a.txt')

五、檔案內游標移動

一: 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+等模式下測試效果

importtimewith open('test.txt','rb') as f: f.seek(0,2) whiletrue: line=f.readline() ifline: print(line.decode('utf-8')) else: time.sleep(0.2)

六、練習

#!/usr/bin/env python#-*- coding:utf-8 -*-

file_object = open('log.txt',mode='r',encoding='utf-8')#讀取檔案所有內容

data =file_object.read()print(data)#從當前游標所在位置向後讀取兩個字元

data = file_object.read(2)print(data)#讀取檔案的所有內容到記憶體,並按照每一行進行分割到列表中。

data_list =file_object.readlines()print(data_list)#如果以後讀取乙個特別大的檔案

for line infile_object:

line=line.strip()print(line)

file_object.close()############################################ 寫操作

file_object = open('log.txt',mode='w',encoding='utf-8')#file_object.write('555\n')#file_object.write('高穎')#file_object.close()#練習1:請將user中的元素根據_鏈結,並寫入'al.txt的檔案

user = ['data','eric']

data= '_'.join(user)

file_object= open('ak.txt',mode='w',encoding='utf-8')

file_object.write(data)

user = [,

]file_object= open('a2.txt',mode='w',encoding='utf-8')for item inuser:

line= "%s|%s\n" %(item['name'],item['pwd'])

file_object.write(line)

file_object.close()#練習3,請將a2.txt中的檔案讀取並新增到乙個列表中['alex|123','eric|oldboy']

file_obj = open('a2.txt',mode='r',encoding='utf-8')

content=file_obj.read()

file_obj.close()

content=content.strip()

data_list= content.split('\n')print(data_list)

result=

file_obj= open('a2.txt',mode='r',encoding='utf-8')for line infile_obj:

line=line.strip()

file_obj.close()#print(result)

f = open('a.txt',mode='wb')#1.把要寫入的字串轉換成二進位制

data = '我是誰'content= data.encode('utf-8')#將字串按照utf-8編碼轉換成二進位制#2.在將二進位制寫到檔案中

f.write(content)#wb 開啟檔案,則write傳入的是二進位制

f.close()

總結模式

r/w/a [唯讀只寫字串】

r+/w+/a+ 【可讀可寫字串】

rb /wb/ ab 【唯讀只寫二進位制】

字串轉二進位制:

v = '你好』

data = v.encode('utf-8')

2.二進位制轉字串

v = b'\xe6\x88\x91\xe5\xa5\xbd\xe5\x9b\xb0'data= v.decode('utf-8')

r+b /w+b /a+b 【可讀可寫二進位制】

檔案操作

開啟讀寫

關閉檔案操作和資料型別的結合使用

python列表操作程式 Python列表操作

1 新增元素 向python列表裡面新增元素主要有三種方法 2 extend extend 對於列表的操作主要實現的是對於特定列表的擴充套件和增長,可以一次新增多個元素,不過也只能新增在列表的最後 m.extend 元素a,元素b,3 insert list.insert a,元素b 表示在列表li...

Nor Flash操作程式

1 物理連線 am29lv160db的norflash 2 讀操作 讀操作不需要命令序列,缺省會進入讀取狀態 u16 read en29lv160ab u32 addr 3 獲取id define flash base 0x00000000 flash接到bank0上 define cmd addr...

android adb命令操作程式

由於開發需要頻繁的安裝 重新安裝,而重新安裝有的時候會報異常,繁瑣的事也多,此時在執行中執行命令多快捷,同時為我們節約了不少時間。關閉adb服務 adb kill server 啟動adb服務 adb start server 查詢當前模擬器 裝置 adb devices 假設為 ebook.apk...