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尝试解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu20.04搭建rtmp视频服务

1.安装软件 sudo apt-get install ffmpeg sudo apt-get install nginx sudo apt-get install libnginx-mod-rtmp 2.nginx配置 修改/etc/nginx/nginx.conf文件,在末尾添加: rtmp {server {listen 1935;application live {live on;}} } 3.视频测试 本…

idea创建maven-archetype-quickstart框架无法显示src/目录

一、配置好idea中Maven目录 1、不使用idea自带Maven&#xff0c; 2、配置好Maven环境变量M2_HOME 3、修改maven中 setting.xml文件 <?xml version"1.0" encoding"UTF-8"?><settings xmlns"http://maven.apache.org/SETTINGS/1.2.0"…

【Qt】常用控件

目录 一、控件概述 二、QWidget 三、Buttons类控件 3.1 QPushButton 3.2 QRadioButton 3.3 QCheckBox 3.4 QToolButton 四、Display Widgets&#xff08;显示类控件&#xff09; 4.1 QLabel 4.2 QLCDNumber 4.3 QProgressBar 4.4 QCalendarWidget 五、Input Widge…

C#中右键通过listview来控制datagridview字段值的是否显示、显示顺序,并存储到XML中。

最终显示效果&#xff0c;如下图所示&#xff1a; datagridview开始显示通过调用XML存储的字段值及顺序来显示&#xff0c;右键调出Tools来控制显示的顺序及是否显示&#xff0c;通过加号和减号进行调整顺序。 XML存储字段值及顺序 主要代码及事件&#xff1a; 获取datagridv…

arduino ide 开发esp8266注意事项

1.引脚序列号必须是常量来定义&#xff0c;否则会无限重启。 #define p2 2 const int Pin2p2; pinMode(Pin2, OUTPUT); 2.关于wifi的模式&#xff0c;ap,sta&#xff0c;apsta三种模式的初始化必须放在void set_up(){}这个函数里&#xff0c;不能额外搞个自定义函数&#xf…

GitHub配置SSH Key(详细版本)

GitHub配置SSH Key的目的是为了帮助我们在通过git提交代码是&#xff0c;不需要繁琐的验证过程&#xff0c;简化操作流程。比如新建的仓库可以下载, 但是提交需要账号密码。 步骤 一、设置git的user name和email 如果你是第一次使用&#xff0c;或者还没有配置过的话需要操作…

鸿蒙Harmony应用开发—ArkTS-高级组件:@ohos.arkui.advanced.ComposeTitleBar(头像和单双行文本标题栏)

一种普通标题栏&#xff0c;支持设置标题、头像&#xff08;可选&#xff09;和副标题&#xff08;可选&#xff09;&#xff0c;可用于一级页面、二级及其以上界面配置返回键。 说明&#xff1a; 该组件从API Version 10开始支持。后续版本如有新增内容&#xff0c;则采用上角…

java 通过 IMetaStoreClient 取 hive 元数据信息

1 pom.xml配置&#xff0c;要与服务器上的版本要一致&#xff0c;并将hive-site.xml 文件放入resources文件夹中 <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency>&l…

演讲嘉宾公布 | 3D音频专题论坛将于3月27日举办

一、3D音频专题论坛 3D音频技术不仅能够提供更加真实、沉浸的虚拟世界体验&#xff0c;跨越时空的限制&#xff0c;探索未知的世界。同时&#xff0c;提供更加丰富、立体的情感表达和交流方式&#xff0c;让人类能够更加深入地理解彼此&#xff0c;建立更加紧密的联系。3D音频未…

风速预测(八)VMD-CNN-Transformer预测模型

往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博客 风速预测&#xff…

图片编辑器中实现文件上传的三种方式和二进制流及文件头校验文件类型

背景 最近在 vue-design-editor 开源项目中实现 psd 等多种文件格式上传解析成模板过程中, 发现搞定设计文件上传没有使用 input 实现文件上传, 所以我研究了一下相关技术, 总结了以下三种文件上传方法 input 文件选择window.showOpenFilePicker 和 window.showDirectoryPicke…

Android Selinux详解[七]--如何给可执行程序bin加标签

经过前面几篇文章的介绍&#xff0c;你应该对Selinux有一定的了解了&#xff0c;现在我们就来实战一下。 你可能会在工作的过程遇到要给可执行程序bin加标签的需求&#xff0c;以下来讲解一下怎么给bin加标签 1. 一个bin通常是通过adb shell bin名字拉起来的&#xff0c;拉起…

WPF 中 样式触发器机制 Style.Triggers

在 WPF (Windows Presentation Foundation) 中&#xff0c;Style.Triggers 是一种样式触发器机制&#xff0c;它允许你在特定条件下改变控件的外观或行为。Style.Triggers 元素是 Style 元素的子元素&#xff0c;用于定义触发器集合。 每个触发器都关联到一个条件&#xff0c;…

何恺明重提十年之争——模型表现好是源于能力提升还是捕获数据集偏见

2011年,知名学者Antonio Torralba和Alyosha Efros提出了“数据集偏差之战”&#xff0c;他们发现机器学习模型很容易“过拟合”到特定的数据集上&#xff0c;导致在其他数据集上表现不佳。过去十年&#xff0c;随着深度学习革命的到来&#xff0c;建立多样化、大规模、全面且尽…

应急响应-Web2

应急响应-Web2 1.攻击者的IP地址&#xff08;两个&#xff09;&#xff1f; 192.168.126.135 192.168.126.129 通过phpstudy查看日志&#xff0c;发现192.168.126.135这个IP一直在404访问 &#xff0c; 并且在日志的最后几条一直在访问system.php &#xff0c;从这可以推断 …

机器学习_聚类(Clustering)

文章目录 简介K-均值算法(K_Means) 简介 你经常跟哪些人联系&#xff0c;而这些人又经常给哪些人发邮件&#xff0c;由此找到关系密切的人群。因此&#xff0c;这可能需要另一个聚类算法&#xff0c;你希望用它发现社交网络中关系密切的朋友。 K-均值算法(K_Means) K-均值是…

查看angular版本的问题The Angular CLI requires a minimum Node.js version of v18.13.

angular版本与node.js版本不匹配的问题 下载安装angular 查看版本&#xff0c;发现不匹配 安装指定版本即可 查看版本并运行

stm32f103c8t6学习笔记(学习B站up江科大自化协)-ADC

ADC简介 ADC&#xff0c;英文全称是Analog to Digital Convert&#xff0c;意为模拟数字转换器&#xff0c;简称模数转换器&#xff0c;或者叫AD转换器&#xff0c;STM32主要是数字电路&#xff0c;数字电路只有高低电平&#xff0c;没有几V电压的概念&#xff0c;如果想读取电…

Android 优化 - 数据结构

一、概念 数据结构&#xff1a;数据存储在内存中的顺序和位置关系&#xff0c;选择合适的数据结构能提高内存的利用率。 线性结构链表结构树形结构 二、线性结构 结构优点缺点数组数据呈线性排列&#xff0c;初始化时就要指定长度且无法更改&#xff0c;会开辟一块连续的内…

使用ansible批量修改操作系统管理员账号密码

一、ansible server端配置 1、对于Linux主机配置免密登录ssh-copy-id -i ~/.ssh/id_rsa.pub rootremote_ip 2、在/etc/ansible/hosts文件中添加相应主机IP 3、对于Windows主机需要在/etc/ansible/hosts文件中进行以下配置 192.168.83.132 ansible_ssh_useradministrator an…