当前位置: 首页 > news >正文

Python文件

Python文件

  • 1 文件与文件路径
    • 1.1 什么是文件和文件路径
    • 1.2 绝对路径
    • 1.3 相对路径
  • 2 文件的基本操作
    • 2.1 路径检查方法
    • 2.2 目录操作方法
    • 2.3 信息获取方法
  • 3 文件读写
    • 3.1 打开文件
    • 3.2 读取文件
    • 3.3 文件写入
    • 3.4 关闭文件
    • 3.5 示例
    • 3.6 with as 上下文语法
  • 4 文件复制
    • 4.1 复制文件
    • 4.2 复制目录
  • 5 文件移动
    • 5.1 移动文件
    • 5.2 移动目录
    • 5.3 重命名文件或目录
  • 6 文件删除
    • 6.1 删除非空目录
  • 7 文件压缩和解压缩
    • 7.1 文件压缩
    • 7.2 文件解压缩
  • 8 编码知识

1 文件与文件路径

1.1 什么是文件和文件路径

文件就是一种存储在存储设备上的信息集合,文件路径就是文件在计算机上的存储位置,文件路径有绝对路径和相对路径。

1.2 绝对路径

就是绝对不变的路径,比如在目录 D:\user\001 下有一个文件 a.txt,那么‘D:\user\001’就是该文件的绝对路径,绝对路径也可以说是从根目录开始描述的路径。

1.3 相对路径

是相对与当前路径开始描述的路径,一个点 . 表示当前目录,两个点 … 表示上级目录。

2 文件的基本操作

在Python中对文件进行操作,主要使用两个模块,os模块和os.path模块。

2.1 路径检查方法

  • 判断文件或路径是否存在

os.path.exists(path) # 若path文件或目录存在返回True,否则返回False

  • 判断是否绝对路径

os.path.isabs(path) # 若path为绝对路径返回True,否则返回False

  • 判断是否是目录

os.path.isdir(path) # 若path为目录返回True,否则返回False

  • 判断是否是文件

os.path.isfile(path) # 若path为文件返回True,否则返回False

2.2 目录操作方法

  • 创建目录

os.mkdir(path)

  • 删除目录

os.rmdir(path) # 删除非空目录

  • 切换到指定目录

os.chdir(path)

  • 删除文件

os.remove(path) # 若path是一个目录会报错,提示权限不足

  • 路径在各操作系统上通用方法示例
>>> path_str = 'c:\\windows\\system'
>>> path_list = path_str.split(os.path.seq)
['c:','windows','system']
>>> os.path.seq.join(path_list)
'c:\\windows\\system'

2.3 信息获取方法

  • 获取Python当前工作目录

os.getcwd()

  • 获取文件绝对路径

os.path.abspath(path)

  • 获取文件相对路径

os.path.relpath(path, start) # path:要获取路径的文件或目录,start:一个相对值

  • 获取文件大小

os.path.getsize(file) # file为要获取大小的文件,返回字节大小

  • 获取path中的路径

os.path.dirname(path)

  • 获取path中的名字

os.path.basename(path)

  • 获取正确的路径分隔斜杠

os.path.seq # 变量:windows下值为‘\’,linux下值为‘/’

  • 获取目录下所有内容

os.listdir(path)
输出结果为一个列表
[‘.ipynb_checkpoints’, ‘1.txt’, ‘python01-test.ipynb’, ‘Untitled.ipynb’]

  • 遍历目录下所有内容

os.walk(path)
功能:遍历path目录下所有文件和目录,包括子目录和文件,在循环的每次迭代时都返回3个值:

  1. 当前文件夹名称
  2. 当前文件夹下子文件夹的字符串列表
  3. 当前文件夹下文件的字符串列表

3 文件读写

Python读写文件的方式与其他语言类似,一般分三步:打开文件、读取或写入文件、关闭文件。

3.1 打开文件

open(filename, [‘r’|‘w’|‘a’], encoding=“utf-8”)
功能:打开filename指定的文件,返回一个File对象,filename可以是绝对路径或相对路径
参数:
---------r:读模式打开文件,不允许对文件进行修改,默认读模式打开文件
--------w:写模式打开文件,对文件进行覆盖式修改
--------a:添加模式打开文件,在文件未尾添加写入文件
返回:File对象

3.2 读取文件

File.read() # 将文件内容全部读出为一个大字符串
File.readline() # 将文件内容全部读出为一个字符串列表,列表中的每一项为文件中的一行

3.3 文件写入

File.write()

3.4 关闭文件

File.close()

3.5 示例

# 硬盘上存在的一个文件
>>> file = "d:\\study\\test.txt"
# 打开文件
>>> f = open(file, encoding="utf-8")
# 读取文件全部内容为一个字符串
>>> str = f.read()
# 读取文件全部内容为一个字符串列表,列表中的每一项为文件中的一行
>>> str_list = f.readline()
# 逐行读取文件
>>> for line in f:
>>>     print(line)
# 关闭文件
>>> f.close()

3.6 with as 上下文语法

文件打开操作后都要进行关闭操作,如果忘记关闭就会出现问题,为了避免忘记关闭的情况出现,Python提供了一个with as 语法来解决此问题,使用示例如下:

>>> file = "d:\\study\\test.txt"
>>> with open(file, encoding="utf-8") as f:
>>>     str = f.read()

4 文件复制

shutil模块(或称shell工具),该模块中包含函数能让我们在Python中对文件进行复制、移动、修改和删除操作。

4.1 复制文件

shutil.copy(source, destination)
功能:复制一个文件,将source处的文件复制到destination(路径或文件)处,若destination是路径则将文件复制到该路径下,若是文件则作为复制文件的新名称,source和destination都为字符串。
返回:被复制文件的路径

4.2 复制目录

shutil.copytree(source, destination)
功能:复制整个文件夹包括子文件夹和文件,将source处的文件夹(包括子文件夹和文件)复制到destination下。
返回:新文件夹路径

5 文件移动

5.1 移动文件

shutil.move(source, destination)
功能:移动一个文件,将source处的文件移动至destination,
… … …若destination文件夹存在,source文件移至该文件夹下,如该文件夹下有同名的文件会被覆盖
… … …若destination文件夹不存在,则当作文件处理,source处文件被重新命名为该名字
… … …构成目的地的文件夹必须存在,否则Python会抛出异常
返回:返回移动后文件的绝对路径字符串

5.2 移动目录

shutil.move(source, destination) 方法中如果source是目录的话就是移动目录

5.3 重命名文件或目录

shutil.move(source, destination) 方法中如果destination是不存在的目录或文件,就实现重命名的效果

6 文件删除

6.1 删除非空目录

shutil.rmtree(path)
功能:删除path处文件夹,包括子文件夹和文件

7 文件压缩和解压缩

利用zipfile模块提供的函数,可对文件或文件夹进行压缩和解压缩处理。

7.1 文件压缩

zipfile.ZipFile(zip文件名)
功能:读取zip文件返回一个ZipFile对象
返回:ZipFile对象
示例:将路径:‘d:\2024’ 下的文件进行压缩处理,代码如下:

import os,zipfile
os.chdir('d:\\2024')
zip1 = zipfile.ZipFile('2024.zip')# ZipFile对象的namelist方法,返回zip文件中所有文件和文件夹的字符串列表
zip1.namelist()
['202401/', '202402/', 'a.txt', 'b.txt']# ZipFile对象的getinfo方法,返回一个关于特定文件的ZipInfo对象,该对象有自己的属性。
# 如表示字节数的file_size(原文件大小)和compress(压缩后文件大小)。
# ZipFile对象表示整个归档对象,而zipinfo则保存归档文件中每个文件有用的信息。
zipinfo1 = zip1.getinfo('a.txt')
zipinfo1.file_size
13001
zipinfo1.compress_size
3820zip1.close()

7.2 文件解压缩

zipfile.extractall()
功能:从zip文件中解压缩所有文件和文件夹,放在当前工作目录中,可向该函数传入一个文件夹参数,则将文件解压到该文件夹下,如传入的目录不存在会自动创建。

zipfile.extract(文件名称)
功能:解压单个文件,可传第二个参数将文件解压到指定目录而不是当前目录。

zipfile.ZipFile(‘zip文件名’, ‘w’)
功能:创建或添加zip文件,以写模式打开ZipFile对象,然后用write方法传入一路径,Python就会压缩该路径指定的文件,示例如下:

>>> zip2 = zipfile.ZipFile('new.zip', 'w')
>>> zip2.write('1.txt', compress_type=zipfile.ZIP_DEFLATED)
>>> zip2.close()

以上代码与写文件一样,'w’模式将擦除zip文件中原有内容,如果要添加内容则用’a’添加模式。

8 编码知识

open 函数的 encoding 参数值设置为了 utf-8,因为设置为该值可以解决很多程序中潜在的编码 BUG。

utf-8 不区分大小写,大写小写都行
utf-8中有个BOM文件头,若有发现utf-8还解决不了编码的问题,可以试着设置为 utf-8-sig尝试解决。

相关文章:

  • llama笔记:官方示例解析 example_chat_completion.py
  • Ubuntu18.04桌面版设置静态IP地址
  • 如何使用人工智能打造超用户预期的个性化购物体验
  • 流畅的 Python 第二版(GPT 重译)(十三)
  • 哔哩哔哩后端Java一面
  • C语言中的联合和枚举(未完)
  • python爬虫基础实验:通过DBLP数据库获取数据挖掘顶会KDD在2023年的论文收录和相关作者信息
  • #微信小程序:微信小程序常见的配置传旨
  • 跨越时空的纽带:探索Facebook如何连接人与人
  • Lambda函数与Selenium WebDriverWait类一起使用
  • C++11 新特性:常量表达式 constexpr(下)
  • 【算法】雪花算法生成分布式 ID
  • C语言-结构体-015
  • 设计模式总结(四)
  • Spring 之声明式事务和 Spring Junit 案例应用详解
  • JavaScript 基本功--面试宝典
  • js操作时间(持续更新)
  • sessionStorage和localStorage
  • SQLServer插入数据
  • SSH 免密登录
  • 缓存与缓冲
  • 面试遇到的一些题
  • 少走弯路,给Java 1~5 年程序员的建议
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 应用生命周期终极 DevOps 工具包
  • 再谈express与koa的对比
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​如何在iOS手机上查看应用日志
  • %check_box% in rails :coditions={:has_many , :through}
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)scrum常见工具列表
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .describe() python_Python-Win32com-Excel
  • .NET CLR Hosting 简介
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • /dev下添加设备节点的方法步骤(通过device_create)
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @DataRedisTest测试redis从未如此丝滑
  • [Android Studio 权威教程]断点调试和高级调试
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [C++]模板与STL简介
  • [Contest20180313]灵大会议
  • [CSS]浮动
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [IE编程] IE 是如何决定Accept-Language 属性的