网页小游戏代码,佛山市网络seo推广公司,一个ip地址做多个网站,钙网logo免费设计在线生成程序经常需要访问文件和目录#xff0c;读取文件信息或写入文件信息#xff0c;在Python语言中对文件的读写是通过文件对象#xff08;file object#xff09;实现的。Python的文件对象也称为类似文件对象或流#xff08;stream#xff09;#xff0c;因为Python提供一种…程序经常需要访问文件和目录读取文件信息或写入文件信息在Python语言中对文件的读写是通过文件对象file object实现的。Python的文件对象也称为类似文件对象或流stream因为Python提供一种类似于文件操作的API实现对底层资源的访问。文件对象可以是实际的磁盘文件也可以是其他存储或通信设备如内存缓冲区、网络、键盘和控制台。
文件操作
打开文件
文件对象可以通过 open函数获得。open函数是 Python 内置函数它屏蔽了创建文件对象的细节使得创建文件对象变得简单。open函数语法如下
open(file,moder,buffering-1,encodingNone,errorsNone,newlineNone,closefdTrue,openerNone)
其中file、mode 和 encoding 是最常用的参数其它参数很少使用。
1file参数
file参数是要打开的文件可以是字符串或整数。如果 file 是字符串表示文件名文件名可以是相对路径也可以是绝对路径如果 file 是整数表示文件描述符文件描述符指向一个已经打开的文件文件描述符是一个整数值它对应到当前程序已经打开的一个文件。例如标准输入文件描述符为0标准输出文件描述符为1标准错误文件描述符为2打开其他文件的文件描述符依次是3、4、5等数字。
2mode参数
mode 参数用来设置文件打开模式
文件打开模式参数 字符串说明r只读模式打开默认w写入模式打开文件会覆盖已经存在的文件x独占创建模式如果文件不存在则创建并以写入模式打开文件如果文件已存在则抛出异常 FileExistsErrora追加模式如果文件存在写入内容追加到文件末尾b二进制模式t文本模式默认更新模式
注意
b 和 t 是文件类型模式如果是二进制文件需要设置 rb、wb、xb、ab如果是文本文件需要设置 rt、wt、xt、at由于 t 是默认模式因此可以省略为 r、w、x、a。必须与 r、w、x 和 a 组合使用来设置文件为读写模式对于文本文件可以使用 r、w、x 和 a对于二进制文件可以使用 rb、wb、xb 和 ab。r、w、和 a 的区别r 打开文件时如果文件不存在则抛出异常w 打开文件时如果文件不存在则创建文件文件存在则清除文件内容a打开文件时如果文件不存在则创建文件文件存在则在文件末尾追加。
3buffering参数
使用缓冲区可以提高效率减少 IO 操作文件数据首先被放到缓冲区中当文件关闭或刷新缓冲区时数据才会真正写入到文件中。buffering 是设置缓冲区策略默认值为 -1此时系统会自动设置缓冲区通常是 4096 字节或 8192 字节buffering0 时关闭缓冲区此时数据会直接写入到二进制文件中这种模式主要应用于二进制文件的写入操作当buffering0时buffering 用来设置缓冲区字节大小。
4encoding 参数 和 errors 参数
encoding 用来指定打开文件时的文件编码主要用于文本文件的打开。errors 参数用来指定编码发生错误时如何处理。
5newline参数
用来设置换行模式
6closefd 参数和 opener 参数
这两个参数在 file 参数为文件描述符时使用。closefd 为True 时文件对象调用close关闭文件同时也会关闭文件描述符closefd 为 为 False 时文件对象调用close方法关闭文件但文件描述符不会关闭。opener参数用于打开文件时执行的一些加工操作opener 参数执行一个函数该函数返回一个文件描述符。 可以看到此时我的项目中是没有“a.txt”文件
示例代码如下
#由于a.txt文件不存在会创建文件且文件内容为写入的World
with open(a.txt,w) as f:f.write(World)#此时为r会覆盖文件内容为Hello
with open(a.txt,r) as f:f.write(Hello)#此时为a会在文件原内容的末尾增加 World
with open(a.txt,a) as f:f.write( )f.write(World)
代码运行结果 可以看到结果为我们输入的“Hello World”字符且新建了一个 a.txt 文件
关闭文件
当使用 open函数打开文件后若不再使用文件应该调用文件对象的close方法关闭文件。文件的操作往往会抛出异常为了保证文件操作无论正常结束还是异常结束都能关闭文件调用close方法应该放在异常处理的finally代码块中也可以用 with as 代码块进行自动资源管理。推荐
示例代码如下
f_name a.txttry:f open(a.txt)
except OSError as e:print(打开文件失败)
else:print(打开文件成功)try:content f.read()print(content)except OSError as e:print(处理OS异常)finally:f.close()
该段代码中使用了两个try语句其中 finally 没有与第一个 try 语句匹配是因为如果文件打开失败则 f None此时再关闭文件会引发异常。
代码运行结果
打开文件成功
Hello WorldProcess finished with exit code 0
文本文件读写 文本文件读写的单位是字符需要考虑编码问题
文本文件读写主要方法 方法名说明read(size-1)从文件中读取字符串size 限制最多读取的字符数size-1表示没有限制读取全部内容readline(size-1)读取到换行符或文件末尾并返回单行字符串如果已经到文件尾则返回一个空字符串size 限制最多读取的字符数size-1表示没有限制readlines()读取文件数据到一个字符串列表中每个行数据是列表的一个元素write(s)将字符串 s 写入文件并返回写入的字符数writelines(lines)向文件中写入一个列表不添加行分隔符因此通常为每一行末尾提供分隔符flush()刷新写缓冲区数据会写入文件中
首先在项目中新建一个“text.txt”文件并写入相关内容 示例代码如下
with open(text.txt,r,encodingutf-8) as f:使用 f.readlines()它将返回一个包含每一行作为元素的列表lines 是一个列表其中包含了文件的每一行使用 for 循环遍历这个列表并打印每一行print(line, end) 确保在打印时不会添加额外的换行符lines f.readlines()for line in lines:print(line,end)# 复制文件内容到copy_name文件中with open(copy.txt,w,encodingutf-8) as file:file.writelines(lines)print()print(文件复制成功)print(接下来文查看文件内容)
# 打印复制的文件内容
with open(copy.txt,r,encodingutf-8) as f:lines f.readlines()for line in lines:print(line,end)
代码运行结果
这是一段用于测试的文字1
这是一段用于测试的文字2
这是一段用于测试的文字3
文件复制成功
接下来文查看文件内容
这是一段用于测试的文字1
这是一段用于测试的文字2
这是一段用于测试的文字3
Process finished with exit code 0
二进制文件读写
二进制文件读写的单位是字节不需要考虑编码问题
示例代码如下
with open(CSDN.png,rb) as f:b f.read()with open(copy.png,wb) as copy_f:copy_f.write(b)print(文件复制成功)
代码运行结果 os模块
Python对文件的操作是通过文件对象实现的文件对象属于 Python 的 io 模块。如果想要通过Python程序管理文件或目录如删除文件、修改文件名、创建目录、删除目录和遍历目录等可以通过Python的 os 模块实现。
os 模块提供了使用操作系统功能的一些函数如文件与目录管理。
os模块与文件和目录管理相关的函数 函数、属性名说明os.rename(src,dst)修改文件名src为源文件dst为目标文件他们都可以是相对当前路径或绝对路径表示的文件os.remove(path)删除path所指的文件如果path是目录则会引发OSErroros.mkdir(path) 创建path所指的目录如果目录已存在则会引发FileExistsError os.rmdir(path)删除path所指的目录如果目录非空则会引发OSErroros.walk(top)遍历top所指的目录树自顶向下遍历目录树返回值是一个有三个元素的元组目录路径目录名列表文件名列表os.listdir(dir)列出指定目录中的文件和子目录os.curdir属性获得当前目录os.pardir属性获得当前父目录
示例代码如下
import os# 读取text.txt中的全部内容并复制给copy.txt
with open(text.txt,r,encodingutf-8) as f:b f.read()with open(copy.txt,w,encodingutf-8) as copyfile:copyfile.write(b)# 修改copy.txt文件名为 copy2.txt
try:os.rename(copy.txt,copy2.txt)
except OSError:os.remove(copy2.txt)# 创建目录
try:os.mkdir(subdir)
except OSError:os.rmdir(subdir)#遍历目录
for item in os.walk(.):print(item)
代码运行结果 os.path模块
对于文件和目录的操作往往需要路径Python提供的 os.path模块提供对路径、目录和文件等进行管理的函数。
os.path模块常用函数 函数名说明os.path.abspath(path)返回 path 的绝对路径os.path.basename(path)返回 path路径的基础名部分如果path指向的是一个文件则返回文件名如果path指向的是一个目录则返回最后目录名os.path.dirname(path)返回path路径中目录部分os.path.exists(path)判断path文件是否存在os.path.isfile(path)如果path是文件则返回Trueos.path.isdir(path)如果path是目录则返回Trueos.path.getatime(path)返回最后一次的访问时间返回值是一个UNIX时间戳1970年1月1日00:00:00以来至现在的总秒数如果文件不存在则无法访问会引发OSErroros.path.getctime(path)返回创建时间返回值是一个UNIX时间戳如果文件不存在或无法访问则引发OSErroros.path.getsize(path)返回文件大小以字节为单位如果文件不存在则无法访问会引发OSError
示例代码如下
import os.path
from datetime import datetimef_name text.txt
af_name rD:\creation\PythonStudy\Pythonproject\mypro01\text.txt# 返回路径中基础名部分
basename os.path.basename(af_name)
print(basename)# 返回路径中目录部分
dirname os.path.dirname(af_name)
print(dirname)#返回文件的绝对路径
print(os.path.abspath(f_name))#返回文件大小
print(os.path.getsize(f_name))
#返回最近访问时间
atime datetime.fromtimestamp(os.path.getatime(f_name))
print(atime)
#返回创建时间
ctime datetime.fromtimestamp(os.path.getctime(f_name))
print(ctime)
#返回修改时间
mtime datetime.fromtimestamp(os.path.getmtime(f_name))
print(mtime)
代码运行结果
text.txt
D:\creation\PythonStudy\Pythonproject\mypro01
D:\creation\PythonStudy\Pythonproject\mypro01\text.txt
106
2024-06-30 11:01:22.267132
2024-06-25 10:06:21.804224
2024-06-25 15:44:00.648589Process finished with exit code 0
参考书籍《python从小白到大牛》第2版关东升 编著 文章创作不易本文接近6000字为了大家能理解写的很详细这也让我花了很多时间。最后如果觉得本文对大家有帮助的话还请给我点个赞和关注谢谢大家