Python學習12 文件的讀寫

目標

在這里插入圖片描述

文件的打開和關閉

mode缺省情況下表示只讀r
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

文件的路徑

前面加個r’,代表其中的轉義字符不起作用
在這里插入圖片描述
在這里插入圖片描述

文件的打開方式

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

案例:實現文件拷貝的功能

將某一文件夾下的某一文件 保存在當前文件 所在目錄。

在這里插入圖片描述


import  os
#讀取文件1
path='./file.txt'
file=open(path,'r',encoding='utf-8')
words=file.read()
file.close()#寫入文件2
path2='./file2.txt'
print(os.listdir('./'))
file2=open(path2,'x',encoding='utf-8')
file2.write(words)
file2.close()
#讀取文件2
file2=open(path2,'r',encoding='utf-8')
print(file2.read())
file2.close()

文件路徑分割+os模塊

1.字符串
在這里插入圖片描述
2.os模塊
在這里插入圖片描述
在這里插入圖片描述

案例:多個文件遞歸復制

文件復制:
設你的文件夾p1下包含多個文件,p2為空文件夾,編寫函數使其能將p1下的文件復制到p2中
在這里插入圖片描述
寫法1:

# path1 = '../lesson12'
# path2 = './path2'
path1=input('請輸入要拷貝的文件路徑')
path2=input('請輸入空的文件路徑')
# 請輸入要拷貝的文件路徑D:\\School\\Undergraduate\\考研學習\\C語言
# 請輸入空的文件路徑C:\\Users\\DQ\Desktop\\test
import osdef createFile(path1, path2):#注意:在這里不要指明編碼格式,因為有些文件過于復雜,可能字符集不能表示完#rb:以二進制的形式讀取file1 = open(path1, 'rb')words = file1.read()#wb以二進制的形式寫入文件,w:如果文件不存在會創建文件,如果文件存在就覆蓋文件file2 = open(path2, 'wb')file2.write(words)file1.close()file2.close()def copyFunction(path1, path2):oldPath = os.listdir(path1)for i in oldPath:oldPath = path1 + '/' + inewPath = path2 + '/' + iif os.path.isfile(oldPath):# 如果文件不存在才創建文件if not os.path.exists(newPath):createFile(oldPath, newPath)elif os.path.isdir(oldPath):# 如果是文件夾不存在才創建if not os.path.exists(newPath):# 創建文件夾os.mkdir(newPath)# 不管是否需要創建文件夾,都要遞歸新的文件夾路徑copyFunction(oldPath, newPath)copyFunction(path1, path2)

寫法2:

import os
def copyFile(srcFile,destFile):fileInput=open(srcFile,mode='rb+')fileOutput=open(destFile,mode='wb+')fileOutput.write(fileInput.read())fileOutput.close()fileInput.close()def copyDir(srcDir,destDir):for s in os.listdir(srcDir):newPath = os.path.join(srcDir, s)destPath = os.path.join(destDir, s)if os.path.isdir(newPath):os.mkdir(destPath)copyDir(newPath,destPath)elif os.path.isfile(newPath):copyFile(newPath,destPath)
srcDir=input("請輸入需要復制的文件夾:")
destDir=input("請輸入目標空文件夾:")
copyDir(srcDir,destDir)

案例:遞歸刪除多個文件

遍歷刪除含有多個文件的文件夾
在這里插入圖片描述

# author:dq
# project:PythonProject
# date:2021年10月28日
# function:遍歷刪除含有多個文件的文件夾。
import ospath = 'D:/CodeProject/Python_DQ/PythonProject/pythonProject/lesson13/path2'
#path=input('請輸入文件路徑')def delete(path):# 判斷文件是否存在if os.path.exists(path):# 如果是文件,就直接刪除if os.path.isfile(path):os.remove(path)# 如果是文件夾elif os.path.isdir(path):# 如果文件夾為空就就直接刪除if not os.listdir(path):os.rmdir(path)# 如果文件夾不為空,就進入新的文件夾遞歸else:for i in os.listdir(path):#拼接獲取新的文件路徑newPath=os.path.join(path,i)delete(newPath)#再逐一刪除外層的文件夾os.rmdir(path)delete(path)

CSV文件

關系型數據庫:表格,二維數據
在這里插入圖片描述

CSV文件讀取與寫入(學習)

newline=‘’識別換行符,空字符串
在這里插入圖片描述
在這里插入圖片描述
使用代碼:

#author:dq
#project:PythonProject
#date:2021年11月01日
#function:csv文件的讀寫#讀取csv
import csvpath='./information.csv'
file=open(path,'w',encoding='utf-8',newline='')
w=csv.writer(file)w.writerow(['name','age','gender'])
w.writerow(['dq',20,'female'])
w.writerow(['dd',20,'man'])
w.writerow(['rwq',20,'female'])
file.close()#寫入CSV
file=open(path,'r',encoding='utf-8',newline='')
r=csv.reader(file)
for data in r:print(data)

將數據寫入內存(了解即可)

在這里插入圖片描述
把print輸出的內容輸出到到文件流(內存)
print是輸出之后進行換行
file是一個文件對象
在這里插入圖片描述
在這里插入圖片描述

序列化和反序列化

在這里插入圖片描述
在這里插入圖片描述

序列化與反序列化:json

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

json序列化與反序列化的方法

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
案例代碼:

#author:dq
#project:PythonProject
#date:2021年11月01日
#function:序列化與反序列化:json#寫入
import json
#dumps
path='./name.txt'
file=open(path,'w',encoding='utf-8')#寫入內容,有會被覆蓋
names=['dq','dd','java']
content=json.dumps(names)
file.write(content)
file.close()#dump
file=open(path,'w',encoding='utf-8')#追加a+
names=['dq','java','java']
content=json.dump(names,file)
file.close()#讀取
#load
file=open(path,'r',encoding='utf-8')
read=json.load(file)
file.close()
print(read,type(read))#['dq', 'java', 'java'] <class 'list'>#loads
content='{"name":"dq","age":"18"}'
p=json.loads(content)
print(p,type(p))#{'name': 'dq', 'age': '18'} <class 'dict'>

序列化與反序列化:pickle

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
代碼:

#author:dq
#project:PythonProject
#date:2021年11月01日
#function:pickle序列化與反序列化
import pickle
#序列化
#dumps
names=['dq','java','Android']
byteContent=pickle.dumps(names)
print(byteContent)#寫入文件
path='./pickle.txt'
file=open(path,'wb')
file.write(byteContent)
file.close()#讀取文件
file_r=open(path,'rb')
#readContent=file_r.read()
readContent=pickle.load(file_r)
print(readContent)
file_r.close()

在這里插入圖片描述
代碼:

#author:dq
#project:PythonProject
#date:2021年11月01日
#function:pickle序列化與反序列化
import pickle
#序列化
#dumps
names=['dq','java','Android']
byteContent=pickle.dumps(names)
print(byteContent)#寫入文件
path='./pickle.txt'
file=open(path,'wb')
file.write(byteContent)
file.close()#讀取文件
file_r=open(path,'rb')
#readContent=file_r.read()
readContent=pickle.load(file_r)
print(readContent)
file_r.close()

json和pickle的區別

在這里插入圖片描述

自動關閉文件:with關鍵字

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

標準輸出和輸入(了解)

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

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

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

相關文章

密碼學專題 openssl的基本概念

配置文件 配置文件是OpenSSL的一個基礎結構組件&#xff0c;OpenSSL使用一組稱為OpenSSLCONF的函數來讀取OpenSSL配置文件的信息。OpenSSL提供的主配置文件是opensl.cnf&#xff0c;它集成了OpenSSL所要使用的配置文件選項的大部分內容。此外&#xff0c;OpenSSL還提供了其他一…

該工程中的宏被禁止_建筑勞務分包都能承擔什么工程

來源&#xff1a;找法網建筑工程的承包單位&#xff0c;也就是總承包單位可以將部分建造工程分包給具有資質的施工單位&#xff0c;這是法律所允許的&#xff0c;但是禁止將建造工程進行轉包。一、建筑勞務分包都能承擔什么工程建筑勞務分包能承擔什么工程要看分包單位的資質&a…

python實驗練習-類的多繼承

題目 1、概述&#xff1a; 完成學生&#xff0c;組長&#xff0c;教師的設計與實現。 2、具體實現內容&#xff1a; 學生&#xff1a; 姓名&#xff0c; 年齡&#xff0c; 學號 吃飯&#xff0c; 睡覺&#xff0c; 學習 組長&#xff1a; 姓名&#xff0c; 年齡&#xff0c; 學…

matlab用辛普森公式求積分_積分近似計算之辛普森公式

對于積分區間[a, b]&#xff0c;若則成立辛普森公式辛普森公式可看作是改良的梯形公式。梯形公式是以直線逼近實際曲線&#xff0c;而辛普森公式則以二次曲線(即拋物線)逼近。以二次曲線逼近實際曲線根據辛普森公式可得各積分小區間內的積分值如下式所示&#xff1a;其中于是&a…

密碼學專題 文件編碼格式

OpenSSL中雖然使用PEM作為基本的文件編碼格式&#xff0c;但是&#xff0c;由于不同的對象其封裝的標準格式不太一樣&#xff0c;所以經常會導致讀者產生迷惑。此外&#xff0c;OpenSSL也支持DER編碼和過時的Netscape編碼格式(NET)OpenSSL的編碼是基于ASN.1標準的&#xff0c;A…

python實驗練習-圖書管理系統(使用文件來實現)

題目 功能描述&#xff1a; 圖書管理系統項目功能描述&#xff1a; &#xff08;1&#xff09;創建txt文本文檔&#xff0c;包含如下&#xff1a; ① books.txt&#xff1a;保存有一些書籍名稱&#xff1b; ② users.txt&#xff1a;用于保存用戶相關的信息&#xff1b; ③ us…

echarts 折線圖 設置y軸最小刻度_【硬貨】vue全家桶+Echarts+百度地圖,搭建數據可視化系統...

作者丨夙言來源丨前端大牛愛好者(Web-2017)https://segmentfault.com/a/1190000018993981本文章篇幅略長&#xff0c;內容有點多&#xff0c;大佬可根據目錄選擇性查閱&#xff0c;新人可一步步來閱讀。1、 前言1.1 業務場景突然接到產品說要做一個數據監控的系統。有線圖、柱狀…

密碼學專題 文本數據庫

應用概述 文本數據庫是跟OpenSSL的CA應用程序緊密結合在一起的&#xff0c;它以文本的方式記錄CA已經簽發的證書的狀態和摘要信息。這些狀態信息可以用于跟證書庫相關的一些操作&#xff0c;比如使用ca指令生成CRL主要就是讀取這個文本數據庫的信息作為參考。文本數據庫就是普…

Python學習13 異常處理機制

概括 常見的異常 異常處理機制 可以多個異常放在元組里面 一旦產生異常&#xff0c;try后面的語句不會繼續執行&#xff0c;會做異常處理 異常使用場景1 close應該放在finally中 異常使用場景2 finally關鍵字 會執行except后面的&#xff0c;報錯

java 布隆過濾器_牛逼哄哄的布隆過濾器,到底有什么用?

Java技術棧www.javastack.cn打開網站看更多優質文章作者&#xff1a;CodeBear的園子www.cnblogs.com/CodeBear/p/10911177.html本文是站在小白的角度去討論布隆過濾器&#xff0c;如果你是科班出身&#xff0c;或者比較聰明&#xff0c;又或者真正想完全搞懂布隆過濾器的可以移…

密碼學專題 序列號文件

序列號文件是ca指令簽發證書的時候的依據文件之一&#xff0c;它從該文件讀取當前簽發的證書的序列號并將序列號文件中的序列號加1&#xff0c;這樣&#xff0c;就可以確保證書的序論號是遞增的&#xff0c;不會重復。序列號文件也是一個文本文件&#xff0c;里面僅僅簡單包含了…

Java web后端6 java Bean EL表達式

EL表達式和JSTL概述 java Bean規范 java中成員變量使用類Integer private Integer count; java Bean的創建 創建java Bean: BookTest.java package com.example.elandjstl.bean;public class BookTest {//java中成員變量使用類Integerprivate Integer count;private Boolean…

python根須系統斜杠_深入淺出Python中的os模塊

「Author&#xff1a;Runsen」當初學Python的時候&#xff0c;把一些標準庫和第三方開源庫學的七零八落&#xff0c;不成系統&#xff0c;正好趁這個機會來系統的整理一下&#xff0c;先從Python常用的標準庫os開始吧。osOS模塊簡單的來說它是一個Python的系統編程的操作模塊&a…

密碼學專題 隨機數文件

無論使用OpenSSL的指令還是其API&#xff0c;隨機數文件都是會經常碰到的一個概念。大部分密碼算法的安全性都跟隨機數的好壞相關&#xff0c;所以一個成功的密碼學應用軟件&#xff0c;對隨機數的處理是不能隨便的。OpenSSL雖然沒有提供很完美的隨機數生成程序&#xff0c;但是…

Java web后端7JSTL

概括 下載jstl的jar包 官網&#xff1a;https://mvnrepository.com/ 網址1&#xff1a;https://search.maven.org/ 在pomxml中插入依賴&#xff1a; <dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1…

python輸入程序_python程序的輸入輸出(acm的幾個小程序)

#!/usr/bin/env python#codingutf-8 a[]for x inraw_input().split(): a.append(int(x))print sum(a) 下面的代碼只有一行&#xff0c;&#xff0c;可惜不是我想出來的&#xff01;&#xff01;&#xff01;&#xff01;&#xff1a; print sum(int(x) for x in raw_input().sp…

密碼學專題 口令輸入的方式

雖然口令的安全性很值得擔憂&#xff0c;但是口令在OpenSSL中是經常使用的&#xff0c;這是沒有辦法替代的一種簡易的保護數據的方法。OpenSSL中使用口令的地方很多&#xff0c;比如密鑰的加密和解密&#xff0c;等等。OpenSSL的指令提供了多種靈活的口令輸入方法&#xff0c;但…

Python學習14 模塊和包

模塊 公共類、函數都可以放在獨立的文件中&#xff0c;這樣其他多個程序都可以使用&#xff0c;而不必把這些公共性的類、函數等在每個程序中復制一份&#xff0c;這樣獨立的文件就叫做模塊&#xff0c;它們的擴展名為.py 標準庫中的模塊 使用help查看模塊 代碼&#xff1a; …

python語句分為_python以什么劃分語句塊

語句塊是在條件為真&#xff08;條件語句&#xff09;時執行或者執行多次&#xff08;循環語句&#xff09;的一組語句&#xff1b;在代碼前放置空格來縮進語句即可創建語句塊&#xff0c;語句塊中的每行必須是同樣的縮進量&#xff1b;&#xff08;推薦學習&#xff1a;Python…

Python學習15 正則表達式1

網址 正則表達式測試網址&#xff1a;https://regex101.com/ 概述 正則表達式&#xff1a; 正則表達式(Regular Expression)是一種文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之間的字母&#xff09;和特殊字符&#xff08;稱為"元字符"…