網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
一、文件操作
前言:
什么是計(jì)算機(jī)的流?
"流"指的是在不同的輸入/輸出等設(shè)備(鍵盤、內(nèi)存、顯示器、音響等)之間進(jìn)行傳遞數(shù)據(jù)。
例如:在Python中使用input()函數(shù),就會(huì)產(chǎn)生數(shù)據(jù)經(jīng)過(guò)鍵盤流輸入到存儲(chǔ)器。
print() 就會(huì)有數(shù)據(jù)從存儲(chǔ)器中流出到屏幕。所以流實(shí)際上就是一個(gè)字節(jié)序列。
就如同管道中的水 “流來(lái)流去”;
1、文件的基本操作
Python中可以通過(guò)內(nèi)置函數(shù)open()打開文件 函數(shù)定義格式如下:
open(file,mode,buffering)
參數(shù)說(shuō)明:
- file : 表示文件的路徑
- mode : 文件打開的模式
- buffering : 設(shè)置訪問(wèn)文件的緩沖方式,若設(shè)置
- 0 : 表示非緩沖方式
- 1 : 每次緩沖衣阿華那個(gè)世俗據(jù)
- 大于1 : 表示使用給定值作為緩沖區(qū)的大小
文件打開模式
打開模式 | 含義 | 說(shuō)明 |
---|---|---|
r/rb | 只讀模式 | 以只讀的方式打開文本文件/二進(jìn)制文件,如果文件不存在或找不到,open()調(diào)用失敗 |
w/wb | 只寫模式 | 以只寫的方式打開文本文件/二進(jìn)制文件,若文件不存在,則創(chuàng)建文件;文件已存在 ,清空文件。 |
a/ab | 追加模式 | 以只寫的方式打開文本文件/二進(jìn)制文件,只允許在文件末尾追加數(shù)據(jù),若文件不存在創(chuàng)建文件 |
r+/rb+ | 讀取模式 | 以讀/寫的方式打開文本文件/二進(jìn)制文件,如果文件不存在,open()調(diào)用失敗 |
w+/wb+ | 寫入模式 | 以讀/寫的方式打開文本文件/二進(jìn)制文件**,如果文件存在,則清空文件** |
a+/ab+ | 追加模式 | 以讀/寫的方式打開文本文件/二進(jìn)制文件,只允許在文件末尾添加數(shù)據(jù),若文件不存在,則創(chuàng)建文件。 |
?? 到了寫代碼環(huán)節(jié),兄弟們操練起來(lái)。耍 ! 耍 ! 整起 !
''' 演示 : Python中內(nèi)置函數(shù)open() 打開文件 文件的操作屬于IO操作 記得釋放資源 ''' file1 = open('a.txt') #只讀模式打開文件a.txt 若文件不存在,則報(bào)異常FileNotFoundError file2 = open('b.txt','w') #只寫模式打開文件b.txt 文件不存在則創(chuàng)建 文件存在則覆蓋 file3 = open('c.txt','w+') #讀寫方式打開 文件不存在則創(chuàng)建 文件存在則覆蓋 #釋放資源 file3.close() file2.close() file1.close()
?? 每次使用文件都得調(diào)用open()和close(),很是麻煩,若打開和關(guān)閉的操作次數(shù)較多,容易忘記close()次操作,就會(huì)造成資源的浪費(fèi)。為此Python引入了 with語(yǔ)句實(shí)現(xiàn)close()方法的自動(dòng)調(diào)用。
定義格式如下:
with open('a.txt') as file: 代碼段
2、讀文件
常用的方法
方法 | 描述 |
---|---|
read() | 從指定文件中讀取指定字節(jié)的數(shù)據(jù) |
readline() | 從指定文件中讀取一行數(shù)據(jù) |
readlines() | 從指定文件中的數(shù)據(jù)一次讀出,并將每一行視為一個(gè)元素,存儲(chǔ)到列表中。 |
?? 到了寫代碼環(huán)節(jié),兄弟們操練起來(lái)。耍 ! 耍 ! 整起 !
file = open('a.txt','r') #讀文件 #str_ = file.read(5) # 讀取五個(gè)字符 #print(str_) #readline # str2 = file.readline() # print(str2) # 第1次讀取 讀取第一行 # str3 = file.readline() # print(str3) # 第二次讀取 讀取第二行 #readliness str4 = file.readlines() print(str4) # 返回的是一個(gè)列表 file.close()
3、寫文件
常用的方法
方法 | 描述 |
---|---|
write() | 方法中的參數(shù)str表示要寫入文件的字符串 |
#1.打開文件 file = open('b.txt','w+') #以讀寫方式打開文件 #2.寫入數(shù)據(jù) file.write("Hello \nWorld") #3.釋放資源 file.close() """ 問(wèn)題: 有的開發(fā)環(huán)境可能搭配在緩沖設(shè)備當(dāng)中 所以調(diào)用write()方法可能出現(xiàn)數(shù)據(jù)未寫入 解決: 這里介紹三種方式: 1.修改open函數(shù)中的buffering參數(shù) 2.刷新緩沖區(qū) 3.釋放資源 """ #1.修改open函數(shù)中的buffering參數(shù) # file2 = open('demo.txt','w+',1) # 設(shè)置為1 表示每次緩沖一行數(shù)據(jù) # file2.write("Hello \nWorld") #2.刷新緩沖區(qū) # file3 = open('demo.txt','w+',encoding="utf-8") # file3.write("你好 \n世界") #寫入中文會(huì)亂碼 這個(gè)時(shí)候指定編碼 # file3.flush() #默認(rèn)情況下,緩沖區(qū)堆積滿了才會(huì)自動(dòng)刷新,手動(dòng)調(diào)用緩沖區(qū)將會(huì)被立即清空,將數(shù)據(jù)寫入到文件 #3.關(guān)閉文件 with open('demo.txt','w+',encoding="utf-8") as file4: #with open的方式將自動(dòng)關(guān)閉文件 file4.write("嗨嗨")
文件讀寫位置操作
""" 文件讀寫位置: Python中提供了獲取文件讀寫位置以及修改讀寫位置的方法,以實(shí)現(xiàn)位置隨機(jī)讀寫 介紹一系列的方法: tell() 獲取文件當(dāng)前的讀寫位置 seek(offset,from) 控制文件的讀寫位置 參數(shù)解釋: offset : 偏移量 即讀寫位置需要移動(dòng)的字節(jié)數(shù) from : 指定讀寫位置 該參數(shù)的賦值分別為 0 1 2 0 : 從文件開頭 1 : 表示使用當(dāng)前讀寫位置 2 : 文件末尾 """ #演示上述 # with open('demo.txt','r+',encoding='utf-8') as file: # location = file.tell() # print(location) # str1 = file.read(5) # print(str1) file2 = open('a.txt',encoding='utf-8') file2.seek(5,0) #文件開頭進(jìn)行偏移 #若打開的是文本文件 seek方法只允許相對(duì)于文件開頭移動(dòng)位置 form參數(shù)為1 2時(shí)將報(bào)錯(cuò) # file2.seek(4,1) #io.UnsupportedOperation: can't do nonzero cur-relative seeks #若要進(jìn)行讀寫位置或文件末尾進(jìn)行位移操作 要以二進(jìn)制的形式打開文件 file3 = open("a.txt",'rb') num3 = file3.seek(3,2) #16 print(num3) file3.close()
4.os模塊的使用
除了Python內(nèi)置函數(shù)外,os模塊中定義了文件操作相關(guān)的函數(shù),包括了刪除、創(chuàng)建、重命名等文件。使用之前先導(dǎo)入
import os
os模塊
import os #1.文件重命名 remove(oldName,newName) # os.rename('a.txt', 'new.txt') #2.創(chuàng)建/刪除文件夾 # os.mkdir('create_dir')# 默認(rèn)路徑下創(chuàng)建目錄 注意: 目錄不能重名!! 否則將創(chuàng)建失敗!!!# os.rmdir('create_dir') #3.刪除文件 # os.remove( 'b.txt') #4.獲取當(dāng)前目錄 str = os.getcwd() print(str) #5.獲取目錄列表 list = os .listdir("./")#. / 表示當(dāng)前目錄下 print(list)
5.文件的迭代
""" 什么是迭代? 迭代就是一個(gè)過(guò)程的多次重復(fù),Python中實(shí)現(xiàn)了__iter__()方法意味著對(duì)象都是可迭代對(duì)象(字典 序列、文件等等) """ file_name = input("請(qǐng)輸入文件名") file = open(file_name,encoding="utf-8") for f in file: print(f,end=" ") file.close()
運(yùn)行效果
二、JSON
什么是JSON
JSON簡(jiǎn)介:JSON的全稱為JavaScript Object Nation(JavaScript 對(duì)象表示語(yǔ)法),
基于 ECMAScript,存放的是的類似于鍵值對(duì),本質(zhì)上來(lái)說(shuō)是javascript的數(shù)據(jù)類型,是一種輕量級(jí)的數(shù)據(jù)交互格式
Python中提供對(duì)Json的支持
dumps() 將Python對(duì)象 --> JSON字符串
loads() JSON --> 對(duì)象
Python對(duì)象 | JSON對(duì)象 |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
""" 什么是JSON JSON簡(jiǎn)介:JSON的全稱為JavaScript Object Nation(JavaScript 對(duì)象表示語(yǔ)法), 基于 ECMAScript,存放的是的類似于鍵值對(duì),本質(zhì)上來(lái)說(shuō)是javascript的數(shù)據(jù)類型,是一種輕量級(jí)的數(shù)據(jù)交互格式 Python中提供對(duì)Json的支持 dumps() 將Python對(duì)象 --> JSON字符串 loads() JSON --> 對(duì)象 """ #導(dǎo)入json模塊 import json #json格式數(shù)據(jù) strList="[1,2,3,4]" #json數(shù)組 strDict='{"price":38.6,"author":"佚名"}' print(type(strList)) #<class 'str'> #json數(shù)組-->python列表 p_list=json.loads(strList) print(p_list) #<class 'str'> print(type(p_list),len(p_list)) #<class 'list'> 4 #json對(duì)象-->python字典 p_dict = json.loads(strDict) print(p_dict,type(p_dict)) #<class 'dict'> print('-'*60) #json格式數(shù)據(jù) listStr=[1,2,3,4] #python列表 tupleStr=(1,2,3,4)#元組 dictStr={"price":38.6,"author":"佚名"} #python列表-->json字符串(數(shù)組) list1 = json.dumps(listStr) print(list1,type(list1)) #<class 'str'> #python元組-->json數(shù)組 tuple1 = json.dumps(tupleStr) print(tuple1,type(tuple1)) #<class 'str'> #python字典-->json對(duì)象 dict1 = json.dumps(dictStr) print(dict1) #{"price": 38.6, "author": "\u4f5a\u540d"} 默認(rèn)使用acsii碼 print(type(dict1)) #<class 'str'> dict2 = json.dumps(dictStr,ensure_ascii=False) print(dict2)
總結(jié)
原文鏈接:https://blog.csdn.net/ChengXuTeng/article/details/124504884
相關(guān)推薦
- 2023-12-09 添加依賴時(shí),出現(xiàn)了此問(wèn)題maven Cannot resolve org.apache.dubbo:
- 2022-10-12 解決“WARNINGThe?remote?SSH?server?rejected?X11?forwa
- 2022-12-16 python委派生成器的具體方法_python
- 2022-12-04 pyecharts如何實(shí)現(xiàn)顯示數(shù)據(jù)為百分比的柱狀圖_python
- 2022-07-21 將本地jar添加到Maven倉(cāng)庫(kù),使用pom.xml引用
- 2022-04-01 FastDFS服務(wù)不能上傳文件 報(bào)錯(cuò):fileutil.MyException: getStoreS
- 2022-03-16 Oracle表空間管理和用戶管理介紹(oracle表空間與用戶的關(guān)系)
- 2022-05-18 ASP.NET?Core?6框架揭秘實(shí)例演示之如何承載你的后臺(tái)服務(wù)_實(shí)用技巧
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- 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)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤: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)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支