python文件与目录操作

目录

文件编码

文件的读取

打开文件

mode常用的三种基础访问模式

读取文件

关闭文件

with open语法

文件的写入操作

文件综合案例

a.txt内容

代码实现

b.txt文件

目录操作

前言

os模块

具体方法 

os.path模块

具体方法 

文件编码

前言:由于计算机只能识别0和1,所以我们丰富的文本文件通过使用编码技术(密码本)将内容翻译成0或1存入

编码技术:即翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译成可识别的内容

注意:计算机中有许多可用的编码(UTF-8、GBK、Big5)等,不同的编码,将内容翻译的二进制也是不同的,所以要使用正确的编码,才能对文件进行正确的读写操作

文件的读取

前言:内存中存放的数据在计算机关机后就会消失,要想长久的保存数据,就要使用硬盘、光盘、U盘等设备。为了便于数据的管理和检索因此引入了文件的概念

注意:

  • 一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名
  • 操作系统以文件为单位管理磁盘中的数据。
  • 文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别
  • 在生活中,文件的操作主要包括打开、关闭、读、写等操作

打开文件

语法:文件对象=open(name,mode,encoding=编码格式)

参数解释 

  • name:要打开得目标文件名的字符串(可以包含文件所在的具体路径)
  • mode:设置打开文件的模式(访问模式):只读、写入、追加等
  • 编码格式:文件编码的格式(推荐使用UTF-8)

注意:

  • 里面传入的三个参数均为字符串格式 
  • 因为encoding并不是第三个参数,所以不能用顺序传参

mode常用的三种基础访问模式

读取文件

语法:变量=文件对象.read(num)

解释:num表示要从文件中读取的数据长度(单位是字节),若没有传入num,那么就表示读取文件所有的数据

语法:变量=文件对象.readlines()

解释:readlines可以按照行的方式把整个文件的内容进行一次性读取,并且返回的是一个列表,其中的每一行数据为一个元素

语法:变量=文件对象.readline()

解释:一次读取一行内容

for循环读取文件行

for line in 文件对象:
    print(line)

理解:每一个line临时变量,就记录了文件的一行数据 

注意:我们在读取文件时,只要该文件对象打开之后,后面不管调用什么文件读取方法,他都会续接上一次读取文件的方法。

关闭文件

语法:文件对象.close()

注意:若不调用close,同时程序没有停止运行,那么这个文件将一直被python程序占用

with open语法

with open(name,mode,encoding) as 文件对象变量:
    f.readlines()

注意:通过with open的语句块对文件进行操作,可以在操作完成后自动关闭close文件,避免遗忘掉close方法

文件的写入操作

写入文件到内存:文件对象.write(写入的内容)

文件刷新:文件对象.flush()

注意

  • 使用open函数对于w模式写入文件的时候,文件不存在则会创建文件,文件存在则会覆盖原文件内容;对于a模式文件不存在则会创建文件,文件存在则会在源文件基础上追加内容
  • 这里a参数的文件追加是关闭文件后也可以追加,若没关闭文件对于w参数调用写文件始终是追加模式
  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush/close的时候,内容会真正写入硬盘
  • 这样做的目的是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写入硬盘)

文件综合案例

需求:将a.txt文件中的内容备份到b.txt文件中

a.txt内容

代码实现

#打开a.txt文件
fr=open("D:/test/a.txt","r",encoding="UTF-8")
#打开b.txt文件,准备写入
fw=open("D:/test/b.txt","w",encoding="UTF-8")
#读取a.txt文件的所有数据
for line in fr:
    #将每次读取的数据写入b.txt
    fw.write(line)
#将内存中的数据刷新至硬盘
fw.flush()
#关流
fw.close()
fr.close()

b.txt文件

目录操作

前言

  • os模块是python内置与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同操作系统上运行,得到的结果可能不一样
  • os模块与os.path模块用于对目录或文件进行操作,其是python系统自带的一个模块

os模块

使用前:import os

具体方法 

import os
#执行命令行语句
os.system("python -V")
#直接启动文件
os.startfile("D:/test/a.txt")
#返回指定路径下的文件和目录信息
print(f"文件和目录信息:{os.listdir('D:/app/youdao')}")
#创建目录
os.mkdir("D:/test/dir1")
#创建多级目录
os.makedirs("D:/test/dir2/dir3")
#删除目录
os.rmdir("D:/test/dir1")
#删除多级目录
os.removedirs("D:/test/dir2/dir3")
#设置当前工作目录
os.chdir("D:/test")
#当前的工作目录
print(f"当前的工作目录为{os.getcwd()}")

os.path模块

使用前:import os.path

具体方法 

import os.path
#获取当前位置的绝对路径(end.py为当前位置的文件)
print(os.path.abspath("end.py"))
#判断当前文件夹下的文件或目录是否存在
print(os.path.exists("end.py"))
#将目录与目录或目录与文件名拼接
print(os.path.join("D\python", "app.txt"))#D\python\app.txt
#分离路径和文件名
print(os.path.split("D:\projects\end.py"))#('D:\\projects', 'end.py')
#分离文件名和扩展名
print(os.path.splitext("app.py"))#('app', '.py')
#从一个目录中提取文件名
print(os.path.basename("D:\projects\end.py"))#end.py
#从一个目录中提取目录不包括文件名
print(os.path.dirname("D:\projects\end.py"))#D:\projects
#判断是否为目录(有end.py不是)
print(os.path.isdir("D:\projects\end.py"))#False

猜你喜欢

转载自blog.csdn.net/m0_60027772/article/details/132120405