Python的学习(十六):对文件的操作

编码格式的介绍

  • Python中的解释器使用的是Unicode(内存)
  • .py文件在磁盘上使用UTF-8存储(外存)

如何修改文件格式?不写的话默认为UTF-8

在python文件上面加上encoding = XXX

比如:

文件读写的原理

  • 内置函数open()创建文件对象

  • 语法规则

    file = open(filename [,mode,endcoding])

#创建时间:2022/2/9 14:58
#今日幸运数:5809file = open('hello.txt','r',encoding = 'UTF-8')
print(file.readlines())
file.close()

常用文件打开方式

文件的类型

  • 按照文件中数据的表现形式,文件分为以下两大类

    1. 文本文件:存储的是普通“字符”文本,默认为unicode字符集,可以使用记事本程序打开。
    2. 二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专门的软件打开,比如:MP3文件,jpg图片等
打开模式 描述
r 以只读方式打开文件,文件的指针会放在文件的开头
w 以只读模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖原有的内容,文件指针在文件的开头
a 以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则在文件末尾追加内容,文件指针在原文件末尾
b 以二进制方式打开文件,不能单独使用,需要与其它模式一起使用,rb或者rw
+ 以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+
file = open('a.txt','w')
file.write('我就想一直一直这样的喜欢你~')
file.close()scr_file = open('hello.png','rb')
target_file = open('hello1.png','wb')
target_file.write(scr_file.read())target_file.close()
scr_file.close()

文件对象的常用方法

  • 文件对象的常用方法
方法名 说明
read([size]) 从文件中读取size个字节或字符的内容返回。若省略[size],则读取到文件末尾,即一次读取文件所有内容
readline() 从文本文件中读取一行内容
readlines() 把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
write(str) 将字符串str内容写入文件
writelines(s_list) 将字符串列表s_list写入文本文件,不添加换行符号
seek(offset[,whence]) 把文件指针移动到新的位置,offset表示相对于whence的位置:offset:为正往结束方向移动,为负往开始方向移动。whence不同的值代表不同含义:0:从文件头开始计算(默认值)1:从当前位置开始计算。2:从文件尾开始计算
tell() 返回文件指针的当前位置
flush() 把缓冲区的内容写入文件,但不关闭文件
close() 把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源
#read([size])
file = open('hello.txt','r')
print(file.read())

可以设定读取的字符个数:

#readlines()
file = open('hello.txt','r',encoding='UTF-8')
print(file.readlines())
#结果是一个列表

file = open('c.txt','a')
file.write('hello')
#可以将列表中的数据写到文件
lst = ['hello','my','love']
file.writelines(lst)
file.close()
file = open('hello.txt','r')
#文件从第二个字符开始读起
file.seek(2)
file.tell()#17
print(file,read)
file.close()
file = open('d.txt','a')
file.write('hello')
file.flush()
file.write('world')
file.close()

With语句(上席文管理器)

  • with语句可以自动管理上下文资源,不论是什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的。

    with open('a.txt','r') as file:print(file.read)#这样可以不用写关闭
    

  • 原理类比:

    '''
    实现了enter和exit两个特殊方法,遵守了上下文管理器协议
    该类对象的实例对象,称为上下文管理器。
    '''
    class MyContentMgr(object):def __enter__(self):print('enter方法被调用了')return selfdef __exit__(self,exc_type,exc_val,exc_tb):print('exit方法被调用执行了')def show(self):print('show方法被调用了')#调用
    with MyCounter() as file:#相当于file=MyCountentMgr()file.show()#不管是否产生异常,exit方法都会被调用
    

    实现文件复制:

    with open('hello.png','rb') as scr_file:with open('copy.png','wb') as target_file:target_file.write(scr_file.read())
    

目录操作

  • os模块是python内置的与操作系统功能和文件系统相关的模块。该模块中的语句执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。
  • os模块与os.path模块用于对目录或文件进行操作
#os模块和操作系统相关的一个模块
import os
os.system('calc.exe')
#直接调用可执行文件
os.startfile('D:\\Softwareloading\\CloudMusic\\cloudmusic.exe')

os模块相关函数

函数 说明
getcwd() 返回当前工作目录
listdir(path) 返回指定路径下的文件和目录信息
mkdir(path[,mode]) 创建目录
makedirs(path1/path2…[,mode]) 创建多级目录
rmdir(path) 删除目录
removedirs(path1/path2…) 删除多级目录
chdir(path) 将path设置为当前工作目录
import os
print(os.getcwd())#获取当前目录lst = os.listdir('../chap1')
print(lst)os.mkdir('newdir2')
os.makedirs('A/B/C')os.rmdir('newdir2')
os.removedirs('A/B/C')os.chdir('D:\\WorkPlace\\PyCharm\\MyPython\\chap1')

os.path模块操作目录相关函数

函数 说明
abspath(path) 用于获取文件或目录的绝对路径
exists(path) 用于判断文件或目录是否存在,如果存在返回True,否则返回False
join(path,name) 将目录名或者文件名拼接起来
splitext() 分离文件名和扩展名
basename(path) 从一个目录中提取文件名
dirname(path) 从一个路径中提取文件路径,不包括文件名
isdir() 判断是否为路径
import os.path
print(os.path.abspath('demon01.py'))
print(os.path.exists('demon13.py'))
print(os.path.join('E:\\Python','demon02.py'))
#将目录与文件拆分
print(os.path.split('D:\\WorkPlace\\PyCharm\\MyPython\\chap1\\demon03.py'))
#将文件库名和扩展名拆分
print(os.path.splitext('demon03.py'))#('demon13','.py')
print(os.path,basename('E:\\python\\chap15\\demon04.py'))#demon04.py
print(os.path,dirname('E:\\python\\chap15\\demon04.py'))#E:\python\chap15
print(os.path,isname('E:\\python\\chap15\\demon04.py'))#False
  • 列出指定目录下的所有py文件
import os
path = os.getcwd()
lst = os.listdir(path)
for filename in lst:if filename.endswith('.py'):print(filename)
  • 类似递归地列出文件
import os
path = os.getcwd()
lst_file = os.walk(path)
for dirpath,dirname,filename in lst_files:print(dirpath)print(dirname)print(filename)print('-------------------')#详细列出for dir in dirname:print(os.path.join(dirpath,dir))for file in filename:print(os.path.join(dirpath,file))print('--------------------')

总结

Python的学习(十六):对文件的操作相关推荐

  1. Python语言学习:创建/删除文件/文件夹、获取当前文件/文件夹路径(系统环境路径/目录)、获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略

    Python语言学习:创建/删除文件/文件夹.获取当前文件/文件夹路径(系统环境路径/目录).获取当前文件夹下的所有子文件路径等代码(os系列用法)实现之详细攻略 目录 系统环境路径的设置 1.sys ...

  2. OpenCV与图像处理学习十六——模板匹配

    OpenCV与图像处理学习十六--模板匹配 一.模板匹配介绍 二.代码应用 一.模板匹配介绍 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定目标的图像位于图像的什么地方,进而对图像进行定位. ...

  3. PyTorch框架学习十六——正则化与Dropout

    PyTorch框架学习十六--正则化与Dropout 一.泛化误差 二.L2正则化与权值衰减 三.正则化之Dropout 补充: 这次笔记主要关注防止模型过拟合的两种方法:正则化与Dropout. 一 ...

  4. C++学习笔记之对文件的操作2

    转载自** https://www.cnblogs.com/uniqueliu/archive/2011/08/03/2126680.html ** 什么都不说了,继续<C++学习笔记之对文件的 ...

  5. C++学习笔记之对文件的操作1

    转载自** https://www.cnblogs.com/uniqueliu/archive/2011/08/03/2126545.html ** =前言= 我们在编写程序的时候,最密不可分的就是对 ...

  6. R语言七天入门教程六:文件相关操作

    R语言七天入门教程六:文件相关操作 一.文件的读写 R 语言作为统计学编程语言,常常需要处理大量数据,而这些数据通常会从文件中进行读取,因此文件读写在R语言中是非常重要的操作.在R语言中,用到最多的文 ...

  7. python dlib学习(六):训练模型

    前言 前面的博客都是使用dlib官方提供的训练好的模型,进行目标识别. - python dlib学习(一):人脸检测 - python dlib学习(二):人脸特征点标定 - python dlib ...

  8. Python深度学习十大核心算法!

    深度学习已经成为了一种热门的技术,它的应用领域正在不断扩大.在深度学习中,有一些核心的算法是非常重要的,这些算法为深度学习的应用提供了强大的基础.在本文中,我们将介绍基于Python深度学习的十大核心 ...

  9. Python基础知识十二【文件操作】

    文件操作 1.文本文件和二进制文件 2.文件操作相关模块概述 3.创建文件对象 4.文本文件的写入 4.1基本的文件写入操作 5.常用编码介绍 5.1 ASCII 5.2 ISO8859-1 5.3 ...

最新文章

  1. 使用Aspose.Cell控件实现Excel高难度报表的生成(三)
  2. C语言以递归求斐波那契数列(附完整源码)
  3. 安装ORACLE 11.2.0.3 错误
  4. mysql查询case when_【原创】关于MySQL高级查询–case when
  5. TIDB事务过大transction too large解决方法
  6. 【grafana】grafana 添加 MySQL 本地无法连接
  7. SpringCloud工作笔记042---fastjson生成json时Null属性不显示的解决方法
  8. MongoDB3.x中添加用户和权限控制
  9. 谁说财务软件不能上纯公有云?
  10. clientHeight、scrollHeight、offsetHeight的区别和理解
  11. VS2017离线下载及安装方式
  12. 继美国后新加坡电信运营商遭DDoS攻击 部分用户断网
  13. ubuntu18.04设置双显示器-HDMI
  14. 网络游戏广告植入案例
  15. Java 17的这些新特性,Java迈入新时代
  16. 彻底解决Android系统A-GPS搜不到卫星的问题!亲测!
  17. MACOS PowerPoint导出指定分辨率的图片
  18. 5个没有提到过的网络游戏植入案例
  19. Android View(一)——View的基础知识
  20. C语言自动识别文本编码

热门文章

  1. stata psm命令_伍德里奇先生的问题:PSM的配对小蝌蚪找妈妈
  2. easyx图形库----贴图
  3. QT 播放器之列表隐藏
  4. 功能测试要注意的那些点你都知道吗?!
  5. 《大数据技术原理与应用》笔记
  6. 【免费】php 生成二维码 qrcode 源代码可在html直接调用
  7. 电商的基本流程及基础知识点(一)
  8. PLC累计计时器应用案例
  9. 如何在地址栏增加小图标
  10. 网络推广如何做? 弋推这里有一份独家秘笈!