文件IO操作,文件路径操作和文件

举报
子都爱学习 发表于 2021/10/23 18:53:28 2021/10/23
【摘要】 一. 文件的分类广义上说文件是按照文件的类型进行分类:如视频文件、音频文件、图片文件、文档文件等 等各种形式的文件,在这样的分类情况下~很明确使用对应的软件打开对应的文件。视频文件:视频播放器 音频文件:网易云音乐…图片文件:画图、照片… 文档文件:word 文档,记事本,wps 软件表格文件:excel,wps 表格软件狭义上的文件是按照组成文件的数据格式分类:文本文件:数据是按照字符组成...

一. 文件的分类

广义上说文件是按照文件的类型进行分类:
如视频文件、音频文件、图片文件、文档文件等 等各种形式的文件,在这样的分类情况下~很明确使用对应的软件打开对应的文件。
视频文件:视频播放器 音频文件:网易云音乐…
图片文件:画图、照片… 文档文件:word 文档,记事本,wps 软件
表格文件:excel,wps 表格软件

狭义上的文件是按照组成文件的数据格式分类:
文本文件:数据是按照字符组成的文件,使用记事本可以正常打开
二进制文件:数据是按照字节组成的文件,使用记事本打开会出现乱码 图片文件、音频文件、视频文件、word 文档
文本的世界是字符串的世界,和编码有关  二进制的世界是字节的世界,和编码无关
编程文件操作是逻辑位置的操作   物理位置操作是操作系统处理的

二.文件IO操作

open()      # 打开文件

f = open('test.txt', 'r')

打印f:
<_io.TextIOWrapper name='1.py' mode='r' encoding='cp936'>
文本IO包装器 mode只读 编码cp936对应GBK
打开文件,会占用当前应用程序进程一个描述符文件(描述符 0 1 2 标准输入 标准输出 标准错误输出)

主mode:
r:只读(默认,本质是rt) 指针在头部
w:写 指针在头部(没有文件创建文件)
a:写 指针在尾部(没有文件创建文件)
x: 写模式,新建一个文件,如果该文件已存在则会报错。
副mode
t:文本模式 (默认)
b: 二进制模式
+: 打开一个文件进行更新(可读可写)。

read()            #  读取文件多少个字节

# test.txt:
# aa
# 123

f = open('test.txt', 'r')
# 读全部
f.read()
# aa
# 123

f = open('test.txt', 'r')
f.read(1)
# a

f = open('test.txt', 'r')
f.read(3)
# aa(换行符也是一个字符)

f = open('test.txt', 'r')
f.read(1)
# a
f.read(3)   # 此时指针在第二个字节
# a
#
# 1


readline()      #  从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。
readlines()    #  读取所有行(直到结束符 EOF)并返回列表
write()           #  写入缓冲区
flush()           #  写入磁盘
close()          #  缓冲区有数据未写入磁盘,会flush; 归还文件描述符
readable()    #  是否可读,bool
writable()     #  是否可写,bool
closed()       #  是否关闭,bool
seek()         #  指定指针位置,导致flush
tell()           #   会动下指针,导致flush

with上下文管理 无论是否执行异常,自动执行close()方法

with open('test.txt', 'r+', encoding="utf-8") as f:
    for line in f.readlines():
        print(line)


3.os.path模块

os.getcwd()                    返回当前的工作目录
os.chdir()                        修改当前的工作目录
os.chmod()                      修改文件的访问权限。
os.system()                      执行系统命令
os.unlink()
os.remove()
os.mkdir()
os.rmdir()                              删除路径指定的空文件夹
os.listdir()
os.path.abspath(path)           返回绝对路径
os.path.dirname(path)            返回文件路径
os.path.basename(path)        返回文件名
os.path.getsize(path)              返回文件大小,如果文件不存在就返回错误
os.path.exists(path)                  路径存在则返回True,路径损坏返回False
os.path.isfile(path)                    判断路径是否为文件
os.path.isdir(path)                      判断路径是否为目录

4.shutil模块

move()
# 功能:移动文件或者文件夹
# 格式:shutil.move(来源地址,目标地址)
# 返回值:目标地址
如果目标路径指向的文件夹中已经存在了同名文件,那么该文件将被重写;如果目标路径指向一个具体的文件,那么指定的文件在移动后将被重命名。
注意:目标路径下的文件夹必须是已经存在的,否则程序会返回错误。


copy()
# 功能:复制文件
# 格式:shutil.copy('来源文件','目标地址')
# 返回值:复制之后的路径

copy2()
# 功能:复制文件,保留元数据
# 格式:shutil.copy2('来源文件','目标地址')
# 返回值:复制之后的路径

copyfileobj()
# 将一个文件的内容拷贝的另外一个文件当中
# 格式:shutil.copyfileobj(open(来源文件,'r'),open('目标文件','w'))
# 返回值:无

copyfile()
# 功能:将一个文件的内容拷贝的另外一个文件当中
# 格式:shutil.copyfile(来源文件,目标文件)
# 返回值:目标文件的路径

copytree()
# 功能:复制整个文件目录
# 格式:shutil.copytree(来源目录,目标目录)
# 返回值:目标目录的路径
# 注意:无论文件夹是否为空,均可以复制,而且会复制文件夹中的所有内容

copymode()
# 功能:拷贝权限

copystat()
# 功能:拷贝元数据(状态)

rmtree()
# 功能:移除整个目录,无论是否空
# 格式:shutil.rmtree(目录路径)
# 返回值:无


which()
# 功能:检测命令对应的文件路径
# 格式:shutil.which(‘命令字符串’)
# 返回值:命令文件所在位置
# 注意:window和linux不太一样。 window的命令都是.exe结尾,linux则不是

disk_usage()
# 功能:检测磁盘使用信息
# 格式:disk_usage(‘盘符’)
# 返回值:元组

# 归档和解包操作
# 归档:将多个文件合并到一个文件当中,这种操作方式就是归档。
# 解包:将归档的文件进行释放。
# 压缩:压缩时将多个文件进行有损或者无损的合并到一个文件当中。
# 解压缩:就是压缩的反向操作,将压缩文件中的多个文件,释放出来。
# 注意:压缩属于归档!

make_archive()
# 功能:归档函数,归档操作
# 格式:shutil.make_archive('目标文件路径','归档文件后缀','需要归档的目录')
# 返回值:归档文件的最终路径

unpack_archive()
# 功能:解包操作
# 格式:shutil.unpack_archive('归档文件路径','解包目标文件夹')
# 返回值:None
# 注意:文件夹不存在会新建文件夹

get_archive_formats()
# 功能:获取当前系统已注册的归档文件格式(后缀)
# 格式:shutil.get_archive_formats()
# 返回值:列表   [(后缀,解释),(后缀,解释),(后缀,解释)...]

get_unpack_formats()
# 功能:获取当前系统已经注册的解包文件格式(后缀)
# 格式:shutil.get_unpack_formats()
# 返回值:列表   [(后缀,解释),(后缀,解释),(后缀,解释)...]

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。