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…

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