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.mzph.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…

matlab用辛普森公式求积分_积分近似计算之辛普森公式

对于积分区间[a, b]&#xff0c;若则成立辛普森公式辛普森公式可看作是改良的梯形公式。梯形公式是以直线逼近实际曲线&#xff0c;而辛普森公式则以二次曲线(即抛物线)逼近。以二次曲线逼近实际曲线根据辛普森公式可得各积分小区间内的积分值如下式所示&#xff1a;其中于是&a…

密码学专题 文件编码格式

OpenSSL中虽然使用PEM作为基本的文件编码格式&#xff0c;但是&#xff0c;由于不同的对象其封装的标准格式不太一样&#xff0c;所以经常会导致读者产生迷惑。此外&#xff0c;OpenSSL也支持DER编码和过时的Netscape编码格式(NET)OpenSSL的编码是基于ASN.1标准的&#xff0c;A…

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;又或者真正想完全搞懂布隆过滤器的可以移…

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…

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学习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;称为"元字符"…

STL源码剖析 空间配置器 查漏补缺

ptrdiff_t含义 减去两个指针的结果的带符号整数类型ptrdiff_t (Type support) - C 中文开发手册 - 开发者手册 - 云社区 - 腾讯云 std::set_new_handler&#xff08;&#xff09;函数的理解 关于set_new_handler的理解_wck0617-CSDN博客new分配内存的时候 如果分配的空间不…

Python学习16 正则表达式2 re模块

re 模块 re 模块&#xff1a; Python的 re 模块实现了正则表达式处理的功能。 导入re模块后&#xff0c;使用findall、search函数可以进行匹配 查找&#xff1a;match和search 多个匹配上的&#xff0c;也只会返回第一个匹配上的 re.match()&#xff1a; 需要特别注意的是&…

STL源码剖析 内存基本处理工具 初始化空间的五个函数

初始化空间的五个函数构造函数 construct()析构函数 destroy()剩余三个底层函数 和 高层函数之间的对应关系如下uninitialized_copy() 对应 copy()uninitialized_fill() 对应 fill()uninitialized_fill_n() 对应 fill_n()使用<memory>使用上述三个底层函数 uninitiali…

单基因gsea_筛到5分的核心基因以后你可以怎么做?

这一次我们从一些已经发表的文章拆解&#xff0c;我们来看看&#xff0c;你找到了一个核心基因以后&#xff0c;你可以怎么做呢&#xff1f;我们就不说那么多废话了&#xff0c;直接用几篇文章的解读来带着大家领会一下如何去进行下一步的分析。Case1&#xff1a;预后标志物免疫…

STL源码剖析 迭代器的概念和traits编程技法

迭代器&#xff1a;依序巡防某个聚合物(容器)所含的各个元素&#xff0c;但是不需要暴露这个聚合物的内部表述方式核心思想&#xff1a;将容器和算法分开&#xff0c;彼此独立设计容器和算法的泛型化&#xff0c;均可以使用模板&#xff0c;使用迭代器连接容器和算法例子 templ…

STL源码剖析 5中迭代器型别

最常使用的5种迭代器的型别 为 value_type、difference_type、pointer、reference、iterator_category。如果想要自己开发的容器和STL进行适配&#xff0c;就需要定义上述5种类型 iteraor_traits 必须针对传入的型别为 pointer 或者 pointer-to-const设计偏特化版本 template &…