third day- 01--文件操作

 1 1、請分別介紹文件操作中不同的打開方式之間的區別:
 2 
 3 模式 含義
 4 r       文本只讀模式
 5 rb       二進制模式  #這種方法,是用來傳輸或存儲,不給人看的。
 6 r+      r+ 是讀寫模式,只要沾上r,文件必須存在
 7 rb+      二進制讀寫模式
 8 w       w 寫模式,它是不能讀的,如果用w模式打開一個已經存在的文件,會清空以前的文件內容,重新寫
 9 wb      和wb 兩種模式
10 w+      w+ 是讀寫內容,只要沾上w,肯定會清空原來的文件
11 wb+     二進制寫讀模式
12 a       a 追加模式,也能寫,在文件的末尾添加內容
13 ab      二進制追 加模式
14 a+
15 ab+
16 '''
從別處拷貝

?

?

1.文件操作基本流程

#1. 打開文件,得到文件句柄并賦值給一個變量
f=open('a.txt','r',encoding='utf-8') #默認打開模式就為r#2. 通過句柄對文件進行操作
data=f.read()#3. 關閉文件
f.close()
護士主婦空姐老師聯系方式.txt1,文件路徑2,編碼方式:utf-83,動作mode,讀,讀寫,寫讀.....f1 = open('D:\空姐護士老師主婦.txt', encoding='utf-8', mode='r')content = f1.read()print(content)f1,文件句柄,文件對象,file,f_handle,file_handle,f_objopen打開的指令,windows的指令,windows 默認編碼方式gbk,linux默認編碼方式utf-8,mac utf-81,打開文件,產生文件句柄。2,操作文件句柄。3,關閉文件。
注意:SyntaxError: (unicode error) 'unicodeescape' codeccan't decode bytes in position 2-3: truncated \UXXXXXXXX escapef1 = open(r'D:\空姐護士老師主婦.txt', encoding='utf-8', mode='r')# f1 = open('D:\\空姐護士老師主婦.txt', encoding='utf-8', mode='r')EncodeDecodeErorr: 編碼錯誤。
View Code

調用文件的兩個小例子

#相對路徑下,不用寫路徑,可以直接寫文件名
# f1=open('123.py',encoding='utf-8',mode='r')  #mode可以不寫,默認讀
# content=f1.read()  #read全部讀出
# print(content)
# f1.close()
#絕對路徑下
# f1=open('F:\\Python自動化21期\\day03\\1.txt',encoding='utf-8') #注意路徑是\\,否則會報錯
# content=f1.read()
# print(content)
# f1.close()
View Code

2.文件打開模式

文件句柄 = open(‘文件路徑’,‘模式’)

rb模式 非文字類的文件的操作。不寫encoding

unicode ---> bytes encode()
bytes---> unicode decode()

1 #編碼的補充:\
2 # s1 = b'\xd6\xd0\xb9\xfa'
3 # s2 = s1.decode('gbk')
4 # s3 = s2.encode('utf-8')
5 # print(s3)  # b'\xe4\xb8\xad\xe5\x9b\xbd'
6 # s1 = b'\xd6\xd0\xb9\xfa'.decode('gbk').encode('utf-8')  簡化寫法
7 # print(s1)
編碼的補充
 
#1. 打開文件的模式有(默認為文本模式):
r ,只讀模式【默認模式,文件必須存在,不存在則拋出異常】
w,只寫模式【不可讀;不存在則創建;存在則清空內容】
a, 只追加寫模式【不可讀;不存在則創建;存在則只追加內容】#2. 對于非文本文件,我們只能使用b模式,"b"表示以字節的方式操作(而所有文件也都是以字節的形式存儲的,使用這種模式無需考慮文本文件的字符編碼、圖片文件的jgp格式、視頻文件的avi格式)
rb 
wb
ab
注:以b方式打開時,讀取到的內容是字節類型,寫入時也需要提供字節類型,不能指定編碼#3,‘+’模式(就是增加了一個功能)
r+, 讀寫【可讀,可寫】
w+,寫讀【可寫,可讀】
a+, 寫讀【可寫,可讀】#4,以bytes類型操作的讀寫,寫讀,寫讀模式
r+b, 讀寫【可讀,可寫】
w+b,寫讀【可寫,可讀】
a+b, 寫讀【可寫,可讀】
View Code

3.文件操作

read(3):1. 文件打開方式為文本模式時,代表讀取3個字符2. 文件打開方式為b模式時,代表讀取3個字節其余的文件內光標移動都是以字節為單位的如:seek,tell,truncate注意:1. seek有三種移動方式0,12,其中1和2必須在b模式下進行,但無論哪種模式,都是以bytes為單位移動的2. truncate是截斷文件,所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因為那樣直接清空文件了,所以truncate要在r+或a或a+等模式下測試效果。
View Code

?

1.read 全部讀取

read(n) 按照字符讀取

readline()按行讀取

readlines() 將每一行作為列表的一個元素并返回這個列表

for循環

# read 全部讀出
# f1 = open('log1', encoding='utf-8')
# content = f1.read()  #
# print(content)
# f1.close()#read(n)
# f1 = open('log1', encoding='utf-8')
# content = f1.read(5)  # r 模式 按照字符讀取。
# print(content)
# f1.close()# f1 = open('log1', mode='rb')
# content = f1.read(3)  # rb模式 按照字節讀取。utf-8編碼,寫4會報錯
# print(content.decode('utf-8'))
# f1.close()#readline()按行讀取
# f1 = open('log1', encoding='utf-8')
# print(f1.readline())
# print(f1.readline())
# print(f1.readline())
# print(f1.readline())
# f1.close()#readlines() 將每一行作為列表的一個元素并返回這個列表
# f1 = open('log1', encoding='utf-8')
# print(f1.readlines())
# f1.close()#for循環  最好只占一行空間,直接read占用內存
# f1 = open('log1', encoding='utf-8')
# for i in f1:
#     print(i)
# f1.close()
View Code

#r+ 讀寫

#w模式  覆蓋之前的內容重新寫入輸入的內容
 w+寫讀模式  清空之前內容寫入
a 追加寫
 1 # r+讀寫
 2 # f1=open('123.py',encoding='utf-8',mode='r+')
 3 # print(f1.read())
 4 # f1.write('666')  #在文件的最后一行后面寫入了666
 5 # f1.close()
 6 
 7 # f1=open('123.py',encoding='utf-8',mode='r+')
 8 # f1.seek(0,2) #調至最后,按照字節去調整光標
 9 # f1.write('777')
10 # f1.seek(0)  #調整光標  不寫打印出內容為空!
11 # print(f1.read())
12 # #光標 按照字節去運轉 seek
13 # f1.close()
14 
15 #w模式  覆蓋之前的內容重新寫入輸入的內容
16 #w和wb區別????于非文本文件,我們只能使用b模式
17 # f1=open('123.py',encoding='utf-8',mode='w')
18 # f1.write('你真美,,')
19 # f1.close()
20 # f1=open('123.py',mode='wb')
21 # f1.write('1234567q釋放'.encode('utf-8'))
22 # f1.close()
23 
24 #  # w+寫讀模式  清空之前內容寫入
25 # f1=open('123.py',encoding='utf-8',mode='w+')
26 # print(f1.read())  #清空之前內容
27 # f1.write('666')  #寫入
28 # f1.seek(0)  #展示寫入的內容,加這兩行
29 # print(f1.read())  #展示寫入的內容,加這兩行
30 # f1.close()
31 
32 #a 追加寫 ab
33 # f1=open('123.py',encoding='utf-8',mode='a')
34 # f1.write('1234')
35 # f1.close()
36 # ab????于非文本文件,我們只能使用b模式
37 #a+  可以讀取
38 # f1=open('123.py',encoding='utf-8',mode='a')
39 # f1.write('lijie')
40 # f1.seek(0)
41 # print(f1.read())
42 # f1.close()
View Code

2.其它操作方法

 1 #其他操作方法:
 2 #read read(n) readline() readlines() write() close
 3 # readable??是否可讀
 4 # writable??是否可寫
 5 #tell 告訴指針的位置
 6 # f1=open('123.py',encoding='utf-8',mode='w')
 7 # f1.write('你真美1')
 8 # print(f1.tell())
 9 # f1.close()
10 #seek(參數),seek(0,2) 調至最后 按照字節去調整光標
11 
12 # 不手動關閉文件方法  with open() as:
13 # with open ('123.py',encoding='utf-8',mode='r') as f1,\
14 #         open ('2.py',encoding='utf-8',mode='w') as f2: #文件不存在時自動創建
15 #     print(f1.read())
16 #     f2.write('234')
View Code

4.文件的改

 1 #文件的改
 2 #1,打開原文件,產生文件句柄。
 3 #2,創建新文件,產生文件句柄。
 4 #3,讀取原文件,進行修改,寫入新文件。
 5 #4,將原文件刪除。
 6 #5,新文件重命名原文件。
 7 
 8 # import os
 9 # with open('file_test', encoding='utf-8') as f1,\
10 #     open('file_test.bak', encoding='utf-8', mode='w') as f2:
11 #     old_content = f1.read()#此方法全部讀取,不好
12 #     new_content = old_content.replace('alex','SB')
13 #     f2.write(new_content)
14 # os.remove('file_test')
15 # os.rename('file_test.bak','file_test')
16 
17 
18 import os
19 with open('file_test', encoding='utf-8') as f1,\
20     open('file_test.bak', encoding='utf-8', mode='w') as f2:
21     for line in f1:  #for循環未結束一直在持續寫,所以不覆蓋
22         new_line = line.replace('SB','alex')
23         f2.write(new_line)
24 os.remove('file_test')
25 os.rename('file_test.bak','file_test')
文件的改

?5.復習

 1 # 文件操作
 2     # 打開文件
 3         # f = open('文件路徑')  默認的打開方式r ,默認的打開編碼是操作系統的默認編碼
 4         # r w a (r+ w+ a+) 以上6種加b  ,如果打開模式+b,就不需要指定編碼了
 5         # 編碼 UTF-8 ,gbk
 6     # 操作文件
 7         # 讀
 8             # read 不傳參數 意味著讀所有
 9                 # 傳參,如果是r方式打開的,參數指的是讀多少個字符
10                 # 傳參,如果是rb方式打開的,參數指的是讀多少個字節
11             # readline
12                 # 一行一行讀  每次只讀一行,不會自動停止
13             # for循環的方式
14                 # 一行一行讀  從第一行開始 每次讀一行 讀到沒有之后就停止
15         # 寫
16             # write 寫內容
17     # 關閉文件
18         # f.close()
19     # with open() as f:
20     # 修改文件 :
21         # import os
22         # os.remove
23         # os.rename
View Code

?

轉載于:https://www.cnblogs.com/lijie123/p/8856840.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452946.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452946.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452946.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是TTL

TTL是指生存時間,簡單來說,它表示了數據包在網絡中的時間,經過一個路由器后TTL就減一,這樣TTL最終會減為0,當TTL為0時,則將數據包丟棄,這樣也就是因為兩個路由器之間可能形成環,如果…

python中itsdangerous模塊

使用itsdangerous生成臨時身份令牌 準備工作: 安裝pip install itsdangerous import itsdangeroussaltsdaf#加鹽,指定一個鹽值,別讓別人知道哦,否則就可以解密出來了 titsdangerous.TimedJSONWebSignatureSerializer(salt,expire…

微信小程序中form 表單提交和取值實例詳解

2019獨角獸企業重金招聘Python工程師標準>>> 我們知道&#xff0c;如果我們直接給 input 添加 bindinput&#xff0c;比如&#xff1a;<input bindinput"onUsernameInput" />&#xff0c;那么可以在 onUsernameInput 中直接使用 e.detail.value&…

matlab如何用代碼導入文件_20+行Matlab代碼實現文件掃描

最近剛好看到一篇回答&#xff0c;用閾值二值化處理圖片水印&#xff0c;受到啟發寫此代碼。閾值二值化適合處理只有黑白兩色的圖片&#xff0c;考慮到文件蓋章&#xff0c;這里作者使用像素顏色替換及灰度值處理圖片&#xff0c;進一步提高處理精度和能力。我們需要&#xff1…

聊聊Code Review

轉載&#xff1a;https://richardcao.me/2016/09/30/Talk-About-Codereview/ 最近思考一個問題&#xff0c;如何進行高效的codereview&#xff0c;有沒有好的工具可以使用&#xff0c;于是花了兩三天時間在Google里淘了一番&#xff0c;這里留下記錄。 Phabricator 首屈一指的c…

項目管理十大趨勢

趨勢一、更多中國企業成立項目管理辦公室&#xff0c;項目管理辦公室也發揮更大的作用 在國內&#xff0c;仍有很多企業每年有成百上千的項目實施&#xff0c;而公司卻沒有成立項目管理辦公室&#xff0c;或者已經有了PMO&#xff0c;但是PMO仍在履行一些較為基礎的職能。 沒…

啟動django服務器報錯raise errorclass(errno, errval) django.db.utils.InternalError

問題描述&#xff1a; 啟動django服務器python manage.py runserver報錯: raise errorclass(errno, errval) django.db.utils.InternalError: (1366, “Incorrect string value: ‘\xE7\x94\xA8\xE6\x88\xB7’ for column ‘name’ at row 1”) 原因&#xff1a;與mysql數據庫…

java單例模式之線程安全問題

單例的目的是為了保證運行時Singleton類只有唯一的一個實例&#xff0c;用于一些較大開銷的操作。 餓漢式&#xff08;沒有線程安全問題&#xff09;: ‘ 由于使用static關鍵字進行了修飾&#xff0c;只能獲取到一個對象&#xff0c;從而達到了單例&#xff0c;并且在Singleton…

路由協議和路由算法的不同

網絡上的主機、路由器通過路由選擇算法形成路由表&#xff0c;以確定發送分組的傳輸路徑。而路由選擇協議是路由器用來完成路由表建立和路由信息更新的通信協議。

2003 r2 64 iis php mysql_關于在win2003中,iis+php+mysql 配置的問題

IIS中配置PHP服務器(iis6.0php5.2.6mysql)&#xff0c;步驟如下&#xff1a;1.我下的是php5.2.6_win32 &#xff0c;下載后&#xff0c;解壓到d:\phpwin下面2.然后從其中找到一個叫php.ini-recommended的文件,更名為php.ini3.打開該文件&#xff0c;找到extension_dir ".…

448. Find All Numbers Disappeared in an Array 尋找有界數組[1,n]中的缺失數

&#xff3b;抄題&#xff3d;&#xff1a; Given an array of integers where 1 ≤ a[i] ≤ n (n size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this array. Could you do it with…

數據結構與算法--1.整型變量值互換

問題: 給定兩個整型變量a,b,在不使用其他變量的情況下&#xff0c;實現兩個變量值的交換。 """ 問題:整型變量值互換 給定兩個整型變量a,b,在不使用其他變量的情況下&#xff0c;實現兩個變量值的交換。 """ a 1234 b 5678 print("binar…

什么是真正的高清,你知道嗎?

摘要&#xff1a;高清&#xff0c;英文為“High Definition”&#xff0c;意思是“高分辨率”。一般所說的高清&#xff0c;有四個含義&#xff1a;高清電視&#xff0c;高清設備&#xff0c;高清格式&#xff0c;高清電影。 高清&#xff0c;英文為“High Definition”&#x…

oracle11g中SQL優化(SQL TUNING)新特性之SQL Plan Management(SPM)

1. 簡介 Oracle Database11gR1引進了SQL PlanManagement&#xff08;簡稱SPM&#xff09;&#xff0c;一套允許DBA捕獲和保持任意SQL語句執行計劃最優的新工具&#xff0c;這樣&#xff0c;限制了刷新優化器統計數據&#xff0c;已有應用改變&#xff0c;甚至數據庫版本升級帶…

Linux基本命令+Makefile

1.linux下查看進程占用cpu的情況(top)&#xff1b; 格式 top [&#xff0d;] [d delay] [q] [c] [S] [s] [i] [n] 主要參數 d&#xff1a;指定更新的間隔&#xff0c;以秒計算。q&#xff1a;沒有任何延遲的更新。如果使用者有超級用戶&#xff0c;則top命令將會以最高的優先…

數據結構與算法--2.數組的定位排序

問題&#xff1a; 給定一個數組A以及下標i&#xff0c;將數組元素進行調整&#xff0c;使得所有比A[i]小的元素排在前邊&#xff0c;接著是所有等于A[i]的元素&#xff0c;最后排列的是比A[i]大的元素 思路&#xff1a; 第一步&#xff1a;將數組分成兩部分&#xff0c;一部…

mysql語法題_mysql數據庫題語法練習

一、練習。導入下面sql執行語句/*數據導入&#xff1a;Navicat Premium Data TransferSource Server : localhostSource Server Type : MySQLSource Server Version : 50624Source Host : localhostSource Database : sqlexamTarget Server Type : MySQLTarget Server Version …

ipv4的不足

v地址基本耗盡&#xff0c;這是當前最棘手的問題v路由表越來越大v功能不足&#xff0c;缺少對多媒體信息傳輸的支持v缺少對高速傳輸的支持v缺少對安全的支持v缺少對主機漫游的支持

OpenGL開發庫的詳細介紹

OpenGL開發庫的組成 開發基于OpenGL的應用程序&#xff0c;必須先了解OpenGL的庫函數。它采用C語言風格&#xff0c;提供大量的函數來進行圖形的處理和顯示。OpenGL庫函數的命名方式非常有規律。所有OpenGL函數采用了以下格式<庫前綴><根命令><可選的參數個數&g…

thinkphp5運行原理_ThinkPHP5.1~5.2全版本遠程代碼執行高危漏洞預警

漏洞綜述關于ThinkPHPThinkPHP是一個快速、兼容而且簡單的輕量級國產PHP開發框架&#xff0c;其借鑒了國外很多優秀的框架和模式&#xff0c;包括使用面向對象的開發結構和MVC模式&#xff0c;融合了Struts的思想和TagLib(標簽庫)、RoR的ORM映射和ActiveRecord模式等。該框架常…