網(wǎng)站首頁 編程語言 正文
python文件操作的基礎(chǔ)詳細(xì)講解(write、read、readlines、readline)_python
作者:ChenBinBini ? 更新時間: 2022-06-12 編程語言前言
python 文件操作、文件讀寫(write、read、readlines、readline)、文件的相關(guān)操作,簡單易懂
1 文件操作
文件就是把一些數(shù)據(jù)存起來,可以讓程序下一次執(zhí)行的時候直接使用,而不必重新制作一份,省時省力。
1.1 文件打開與關(guān)閉
1.1.1 打開文件
在python中,使用open函數(shù),可以打開已經(jīng)存在的文件,或者創(chuàng)建一個新文件,open(文件名,訪問模式)
示例如下:
f = open(‘test.txt','w')
沒有找到‘test.txt’文件,所以新建了‘test.txt’文件
1.1.2 關(guān)閉文件
close()
示例如下:
#新建一個文件,文件名為:test.txt
f = open(“text.txt”,”w”)
f.colse()#關(guān)閉這個文件
1.2 訪問模式及說明
訪問模式 | 說明 |
---|---|
r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認(rèn)模式。 |
w | 打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
a | 打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。 |
rb | 以二進(jìn)制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認(rèn)模式。 |
wb | 以二進(jìn)制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
ab | 以二進(jìn)制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。 |
r+ | 打開一個文件用于讀寫。文件指針將會放在文件的開頭。 |
w+ | 打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。 |
a+ | 打開一個文件用于讀寫,如果該文件已存在,文件指針將會放在文件的結(jié)尾。文件打開時會是追加模式。如果改文件不存在,創(chuàng)建新文件用于讀寫。 |
rb+ | 以二進(jìn)制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭 |
wb+ | 以二進(jìn)制格式打開一個文件用于讀寫。如果改文件已存在則會覆蓋。如果改文件不存在,創(chuàng)建新文件。 |
ab+ | 以二進(jìn)制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結(jié)尾。如果改文件不存在,創(chuàng)建新文件用于讀寫。 |
2 文件讀寫
2.1 寫數(shù)據(jù)(write)
使用write()可以完后向文件寫入數(shù)據(jù)
示例如下:
#寫
f = open("test.txt","w") #打開文件,w模式(寫模式),文件不存在就新建
f.write("hello world,I am here!") #將字符串寫入文件中
f.close() #關(guān)閉文件
寫入的內(nèi)容
2.2 讀數(shù)據(jù)(read)
使用read(num)可以從文件中讀取數(shù)據(jù),num表示要從文件中讀取的數(shù)據(jù)的長度(單位是字節(jié)),如果沒有傳入num,那么就表示讀取文件中的所有數(shù)據(jù)
示例如下:
#讀:read方法,讀取指定的字符,開始時定位在文件頭部,每執(zhí)行一次向后移動指定字符數(shù)
f = open("test.txt","r")
content = f.read(5) #一次讀五個字符
print(content)
print('-'*30)
content = f.read()
print(content)
f.close()
運(yùn)行結(jié)果下圖:
2.3 讀數(shù)據(jù)(readlines)
就像read沒有參數(shù)時一樣,readlines可以按照行的方式把整個文件中的內(nèi)容進(jìn)行一次性的讀取,并且返回的是一個列表,其中每一行的數(shù)據(jù)為一個元素
示例如下:
f = open("test.txt","r")
content = f.readlines() # 一次性讀取全部文件為列表,每行一個字符串
print(content) #['hello world,I am here!\n', 'hello world,I am here!\n', 'hello world,I am here!\n', 'hello world,I am here!\n',
i = 1
for temp in content:
print("%d:%s"%(i,temp))
i += 1
f.close()
運(yùn)行結(jié)果下圖:
2.3 讀數(shù)據(jù)(readline)
readline一次讀取一行
示例如下:
f = open("test.txt","r")
content = f.readline() #1:hello world,I am here!--1
print("1:%s"%content)
content = f.readline() #2:hello world,I am here!--2
print("2:%s"%content)
f.close()
運(yùn)行結(jié)果下圖:
3 文件的相關(guān)操作
有些時候,需要對文件進(jìn)行重命名、刪除一些操作,python的os模塊中都有這些功能
3.1 文件重命名
os模塊中的rename()可以完成對文件的重命名操作rename(需要修改的文件名,新的文件名)
import os
os.rename(“畢業(yè)論文.txt”,”畢業(yè)論文-最終版.txt”)
3.2 刪除文件
os中的remove()可以完成對文件的刪除操作
remove(待刪除的文件名)
import os
os.remove(“畢業(yè)論文.txt”)
3.3 創(chuàng)建文件夾
import os
os.mkdir(“張三”)
3.4 獲取當(dāng)前目錄
import os
os.getcwd()
3.5 改變默認(rèn)目錄
import os
os.chdir(“../”)
補(bǔ)充:文件綜合操作實(shí)例
將文件夾下所有圖片名稱加上'_fc'
python代碼:
# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字符串
#'連接符'.join(list) 將列表組成字符串
def change_name(path):
? ? global i
? ? if not os.path.isdir(path) and not os.path.isfile(path):
? ? ? ? return False
? ? if os.path.isfile(path):
? ? ? ? file_path = os.path.split(path) #分割出目錄與文件
? ? ? ? lists = file_path[1].split('.') #分割出文件與文件擴(kuò)展名
? ? ? ? file_ext = lists[-1] #取出后綴名(列表切片操作)
? ? ? ? img_ext = ['bmp','jpeg','gif','psd','png','jpg']
? ? ? ? if file_ext in img_ext:
? ? ? ? ? ? os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
? ? ? ? ? ? i+=1 #注意這里的i是一個陷阱
? ? ? ? #或者
? ? ? ? #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
? ? ? ? #if file_ext in img_ext:
? ? ? ? # ? ?print('ok---'+file_ext)
? ? elif os.path.isdir(path):
? ? ? ? for x in os.listdir(path):
? ? ? ? ? ? change_name(os.path.join(path,x)) #os.path.join()在路徑處理上很有用
img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('程序運(yùn)行耗時:%0.2f'%(c))
print('總共處理了 %s 張圖片'%(i))
總結(jié)
原文鏈接:https://blog.csdn.net/ChenBinBini/article/details/109520494
相關(guān)推薦
- 2022-07-14 Python實(shí)現(xiàn)單例模式的四種方式詳解_python
- 2022-10-05 react-router-dom入門使用教程(前端路由原理)_React
- 2022-01-17 ubuntu出現(xiàn)RPM should not be used directly install RP
- 2022-12-29 python中的多進(jìn)程的創(chuàng)建與啟動方式_python
- 2022-04-08 C語言互換最大值與最小值的位置_C 語言
- 2022-05-12 python2中input()漏洞
- 2022-04-09 在Mybatis中使用自定義緩存ehcache
- 2021-12-13 C語言輸出唯一的子串_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支