Python 学习笔记(十)—— 文件

目录

一、文件基本概念

二、文件打开和关闭

2.1 打开文件 open() 方法

2.2 File 对象的属性

2.3 关闭文件 close() 方法

三、文件操作

3.1 写入操作方法

3.1.1 write() 方法

3.3.2 writelines() 方法

3.2 读取操作方法

3.2.1 read() 方法

3.2.2 readline() 方法

3.2.3 readlines() 方法

3.3 定位与移动操作方法

3.3.1 tell() 方法

3.3.2 seek() 方法

3.4 复制、重命名与删除

3.4.1 文件复制

3.4.2 文件重命名

3.4.3 文件删除

3.4.4 删除目录

四、文件夹操作

4.1 创建文件夹

4.2 删除文件夹

4.3 重命名文件夹

4.4 检查文件夹是否存在

4.5 切换当前工作目录

4.6 获取当前工作目录


一、文件基本概念

文件是计算机系统中存储信息的基本单位。它可以包含文本、图片、音频、视频等各种形式的数据。文件通常被存储在存储设备(如硬盘、闪存、光盘等)上,可以被计算机系统读取、写入和处理。

文件通常有一个唯一的文件名,用于标识不同的文件。文件名一般包含文件的扩展名,用于表示文件的类型或格式。例如:.txt表示文本文件,.jpg表示图片文件,.mp3表示音频文件等。

文件可以通过文件路径来定位和访问。文件路径通常包含文件的位置信息,可以是相对路径(相对于当前工作目录)或绝对路径(从根目录开始的完整路径)。通过文件路径,用户可以找到指定文件并操作它。

文件的内容可以被读取、写入和修改。读取文件可以获取文件中存储的数据,并将其加载到计算机内存中。写入文件可以将数据存储到文件中,并更新文件的内容。修改文件可以改变文件的内容、大小或属性。

文件可以分为不同的类型,常见的类型包括文本文件、二进制文件、可执行文件、压缩文件等。不同类型的文件有不同的结构和格式,需要使用不同的方法来处理和操作。

二、文件打开和关闭

2.1 打开文件 open() 方法

open()方法是Python内置的文件打开函数,用于打开一个文件并返回文件对象。

函数原型:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file:要打开的文件名或路径。
  • mode:打开文件的模式。
  • buffering:设置缓冲策略,默认值为-1,表示使用系统默认的缓冲策略。
  • encoding:指定打开文件时的编码方式,常用的编码方式有'utf-8'、'gbk'等。
  • errors:设置编码错误处理方式,默认值为None,表示忽略错误。
  • newline:设置换行符的处理方式,默认值为None,表示使用系统默认的换行符。
  • closefd:指定关闭文件描述符的方式,默认值为True,表示关闭文件描述符。
  • opener:设置打开文件时使用的自定义开启器。

常见的文件打开模式:

模式描述
'r'以只读方式打开文件。文件指针位于文件的开头,如果文件不存在则抛出异常。
'w'以写入方式打开文件。如果文件存在则将其内容清空,如果文件不存在则创建一个新文件。
'a'以追加方式打开文件。文件指针位于文件的末尾,如果文件不存在则创建一个新文件。
'x'以独占方式创建一个新文件并打开文件。如果文件已经存在则抛出异常。
'b'以二进制模式打开文件。可以与其他模式一起使用,如 'rb'、'wb'、'ab'。
't'以文本模式打开文件。默认模式,可以与其他模式一起使用,如 'rt'、'wt'、'at'。
'+'以读写方式打开文件。可以与其他模式一起使用,如 'r+'、'w+'、'a+'。

2.2 File 对象的属性

在 Python 中,通过使用 open() 函数打开文件后,会返回一个文件对象。可以使用该对象的属性来获取有关文件的相关信息。以下是一些常见的文件对象属性:

  • name:返回文件的名称或路径。
  • mode:返回文件的打开模式。
  • closed:表示文件是否已关闭,如果文件已关闭则为 True,否则为 False
  • encoding:返回文件的编码方式。
  • readable():返回文件是否可读。
  • writable():返回文件是否可写。
  • seekable():返回文件是否支持随机访问。

例如:

f = open('file.txt', 'r')
print(f.name)        # 输出文件名 'file.txt'
print(f.mode)        # 输出文件的打开模式 'r'
print(f.closed)      # 输出文件是否已关闭 False
print(f.encoding)    # 输出文件的编码方式
print(f.readable())  # 输出文件是否可读 True
print(f.writable())  # 输出文件是否可写 False
print(f.seekable())  # 输出文件是否支持随机访问 True

f.close()            # 关闭文件
print(f.closed)      # 输出文件是否已关闭 True

注意:

在使用这些属性之前,确保文件对象是有效的并且已打开。如果文件已关闭,则无法访问文件对象的属性。

2.3 关闭文件 close() 方法

在Python中,我们可以使用文件对象的 close() 方法来关闭已打开的文件。调用 close() 方法后,文件将不再可用,并且资源将被释放。

以下是使用 close() 方法关闭文件的示例:

f = open("file.txt", "r")
# 使用文件对象进行操作
f.close()

注意:

关闭文件是一个很好的习惯,可以确保文件资源被正确释放。在没有显示调用 close() 方法时,Python也会在程序结束时自动关闭文件。

此外,还有另一种更常用的方式来打开文件,并使用 with 语句来自动关闭文件。下面是使用 with 语句来关闭文件的示例:

with open("file.txt", "r") as f:
    # 使用文件对象进行操作
    # 在结束 with 代码块后,文件会自动关闭

在上面的示例中,我们使用 with 语句打开文件,并将返回的文件对象赋给变量 f。然后我们使用文件对象进行文件操作。当 with 代码块结束时,文件对象会自动关闭,无需显式调用 close() 方法。

三、文件操作

3.1 写入操作方法

3.1.1 write() 方法

在Python中,我们可以使用文件对象的 write() 方法向文件中写入内容。write() 方法接受一个字符串作为参数,并将该字符串写入文件。

以下是使用 write() 方法写入文件的示例:

f = open("file.txt", "w")
f.write("Hello, World!")
f.close()

在上面的示例中,我们使用 open() 函数以写入模式打开文件,并将返回的文件对象赋给变量 f。然后,我们使用 f.write("He llo, World!") 将字符串 "Hello, World!" 写入文件。最后,我们调用 f.close() 方法来关闭文件。

3.3.2 writelines() 方法

除了使用 write() 方法写入字符串,我们还可以使用 writelines() 方法将多个字符串写入文件writelines() 方法接受一个字符串列表作为参数,将列表中的所有字符串写入文件。

以下是使用 writelines() 方法写入文件的示例:

f = open("file.txt", "w")
lines = ["Hello, ", "World!"]
f.writelines(lines)
f.close()

在上面的示例中,我们使用 writelines() 方法将字符串列表 lines 写入文件。

除了普通文本,我们还可以写入其他数据类型,如数字、列表或者字典。但是,在写入非字符串类型时,需要先将其转换为字符串格式。

以下是将数字写入文件的示例:

f = open("file.txt", "w")
f.write(str(10))
f.close()

在上面的示例中,我们在写入之前使用 str() 函数将数字 10 转换为字符串。然后,我们通过 write() 方法将字符串 "10" 写入文件。

3.2 读取操作方法

文件读取操作方法有以下几种常见的方式:

3.2.1 read() 方法

read()方法:一次性读取整个文件的内容。

with open('file.txt', 'r') as file:
    content = file.read()

3.2.2 readline() 方法

readline()方法:逐行读取文件内容。每次调用readline()方法读取一行,并将光标移动到下一行。

with open('file.txt', 'r') as file:
    line = file.readline()
    while line:
        print(line)
        line = file.readline()

3.2.3 readlines() 方法

readlines()方法:读取多行内容并以列表形式返回,每一行作为列表的一个元素。

with open('file.txt', 'r') as file:
    lines = file.readlines()
    for line in lines:
        print(line)

3.3 定位与移动操作方法

在文件读取过程中,有时需要定位到文件的特定位置或移动文件指针到不同的位置。Python提供了一些方法来进行文件定位移动操作。

以下是文件定位与移动操作方法:

3.3.1 tell() 方法

tell()方法:tell()方法返回文件指针的当前位置,即文件中当前读取/写入的位置。

with open('file.txt', 'r') as file:
    position = file.tell()
    print(position)

3.3.2 seek() 方法

seek()方法:seek()方法用于将文件指针移动到指定位置。它接受两个参数:偏移量和起始位置。

函数原型:

seek(offset, whence)

参数说明:

  • offset:偏移量,表示需要移动的字节数。可以是正数、负数或零。正数表示向后移动,负数表示向前移动,零表示不移动。
  • whence:起始位置,表示确定偏移量的参考位置。可以是0、1或2。
    • 0:从文件开头开始计算偏移量。
    • 1:从当前位置开始计算偏移量。
    • 2:从文件末尾开始计算偏移量。

  • seek()方法在文件开头位置移动文件指针:
with open('file.txt', 'r') as file:
    file.seek(10)  # 将文件指针移动到第10个字节处
    content = file.read()
    print(content)

  • seek()方法在当前位置移动文件指针:
with open('file.txt', 'r') as file:
    file.seek(5, 1)  # 从当前位置向后移动5个字节
    content = file.read()
    print(content)

注意:

在使用seek()方法之前,要确保文件以读取模式打开。此外,使用tell()和seek()方法时,要确保文件指针不超出文件的大小范围,否则可能会引发异常。

3.4 复制、重命名与删除

在python中,可以使用shutil模块os模块来进行文件复制、重命名和删除操作。

3.4.1 文件复制

使用shutil模块中的copy()函数进行文件复制操作。示例如下:

import shutil

# 复制单个文件
shutil.copy('source_file.txt', 'destination_file.txt')

# 复制整个目录
shutil.copytree('source_directory', 'destination_directory')

3.4.2 文件重命名

使用os模块中的rename()函数进行文件重命名操作。示例如下:

import os

os.rename('old_file_name.txt', 'new_file_name.txt')

3.4.3 文件删除

使用os模块中的remove()函数进行文件删除操作。示例如下:

import os

os.remove('file_to_be_deleted.txt')

3.4.4 删除目录

需要使用shutil模块中的rmtree()函数。示例如下:

import shutil

shutil.rmtree('directory_to_be_deleted')

四、文件夹操作

在Python中,使用os模块可以进行文件夹的操作。下面是一些常见的文件夹操作方法:

4.1 创建文件夹

os.mkdir(path),其中path为要创建的文件夹路径。

import os
os.mkdir("folder_name")

4.2 删除文件夹

os.rmdir(path),其中path为要删除的文件夹路径。

import os
os.rmdir("folder_name")

4.3 重命名文件夹

os.rename(src, dst),其中src为原文件夹路径,dst为目标文件夹路径。

import os
os.rename("old_folder_name", "new_folder_name")

4.4 检查文件夹是否存在

os.path.exists(path),其中path为文件夹路径。返回值为布尔型,存在返回True,不存在返回False

import os
if os.path.exists("folder_name"):
    print("文件夹存在")
else:
    print("文件夹不存在")

4.5 切换当前工作目录

os.chdir(path),其中path为目标文件夹路径。

import os
os.chdir("folder_name")

4.6 获取当前工作目录

os.getcwd(),返回当前工作目录的路径。

import os
current_dir = os.getcwd()
print(current_dir)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【第1节】书生·浦语大模型全链路开源开放体系

目录 1 简介2 内容(1)书生浦语大模型发展历程(2)体系(3)亮点(4)全链路体系构建a.数据b 预训练c 微调d 评测e.模型部署f.agent 智能体 3 相关论文解读4 ref 1 简介 书生浦语 InternLM…

深度Q-Learning在算法交易中的应用

一、说明 在《华尔街的随机漫步》一书中,作者伯顿马尔基尔(Burton G. Malkiel)声称:“一只蒙着眼睛的猴子向报纸的财经版面投掷飞镖,可以选择一个与专家精心挑选的投资组合一样好的投资组合。 如果我们让巴甫洛夫的狗接…

RabbitMQ-交换机

文章目录 交换机fanoutDirecttopicHeadersRPC 交换机 **交换机 **是消息队列中的一个组件,其作用类似于网络路由器。它负责将我们发送的消息转发到相应的目标,就像快递站将快递发送到对应的站点,或者网络路由器将网络请求转发到相应的服务器…

使用prompt_toolkit构建交互式命令行工具

prompt_toolkit是一个python库,用于构建命令行工具和终端应用。其官网介绍如下, prompt_toolkit is a library for building powerful interactive command line and terminal applications in Python. 安装命令如下, pip install prompt_to…

CCIA信息系统业务安全服务资质证书介绍条件要求

CCIA(中国通信工业协会)证书是由中国通信工业协会颁发的一种专业资质证书,旨在评估和认证信息化建设企业在信息化项目建设中提供的服务能力。该证书不涉及技术和产品标准,而是重点强调企业在行业服务方向、安全服务意识和专业服务…

基于Springboot的心灵治愈交流平台

基于SpringbootVue的心灵治愈交流平台的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页展示 系统公告 心理咨询师 心灵专栏 压力测试 小纸条 后台登录界面 后…

CST电磁仿真物体表面的Sheet结构和生成3D Model【基础教程】

由Sheet结构生成3D Model 使用Shell Solid and Thicken Sheet! Modeling > Tools > Shape Tools > Shell Solid or Thicken Sheet Shell Solidor ThickenSheet会根据不同类型的模型提供两种完全不同的功能。 如033.由3D Model生成Cavity 所述&#xff…

量子密钥分发系统设计与实现(一):系统基本架构讨论

经过一段时间讨论,我们了解到量子密钥分发设备是当前量子保密通信系统的基础。从本文开始,我将开启量子密钥分发系统设计与实现系列,详细讨论量子密钥分发设备如何从0到1的搭建。 1.QKD系统总体讨论 QKD系统的核心功能就是为通信双方提供理论…

后端插入数据库问题

IDEA报错:Error updating database. Cause: java.sql.SQLException: Column count doesn’t match value count at row 1 1、看报错消息,SQLException,定位到SQL语句问题 并且看best guess最好猜测,再去找路径下的ShoppingCartMa…

第十二章 屏幕后处理效果

屏幕后处理效果是实现屏幕特效的常见方法。 建立一个基本的屏幕后处理的脚本 屏幕后处理指的是在渲染完整个场景得到屏幕图像后,再对这个图像进行一系列操作,实现各种屏幕特效。 想要实现屏幕后处理的基础在于抓取屏幕。Unity为我们提供了一个接口-OnRenderImage函数。 声…

【C语言回顾】函数

前言1. 函数的概念和分类2.库函数3. 自定义函数3.1 自定义函数的简单介绍3.2 自定义函数举例 4. 形参和实参4.1 形参4.2 实参4.3 形参和实参的关系4.3.1 理解4.3.2 举例代码和调试 5. 嵌套函数和链式访问5.1 嵌套函数5.2 链式访问 6. 函数的声明和定义6.1 单个文件6.2 多个文件…

Java PDF文件流传输过程中速度很慢,如何解决?

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…

Https网站接口被黑被恶意调取

背景: 维护的一个网站最近短信接口被黑,发送大量短信。起初以为是在网站内部操作,优化了发送短信前的操作,如添加图形验证码,屏蔽国外IP等。但后续还存在被调取情况,定位排查到是该接口在外部被恶意调取。 …

牛客Linux高并发服务器开发学习第二天

Gcc编译 利用gcc 生成应用时如果不加-o 和应用名,默认生成a.out 可以用./ a.out打开 Gcc工作流程 可执行程序Windows系统中为.exe Linux系统中为.out g也可以编辑c程序 gcc也可以编译cpp代码,只是在编译阶段gcc不能自动共和C程序使用的库进行联接&…

论文笔记:Are Human-generated Demonstrations Necessary for In-context Learning?

iclr 2024 reviewer 评分 6668 1 intro 大型语言模型(LLMs)已显示出在上下文中学习的能力 给定几个带注释的示例作为演示,LLMs 能够为新的测试输入生成输出然而,现行的上下文学习(ICL)范式仍存在以下明显…

海信发布《黑神话:悟空》定制电视E8N新品,重塑大屏游戏体验

4月17日,在“AI美好生活”2024海信电视E8系列新品发布会上,海信电视官宣成为《黑神话:悟空》全球官方合作伙伴。同时,海信电视还为广大游戏玩家带来了《黑神话:悟空》的显示CP,推出了官方定制电视——旗舰新…

夸克AI PPT初体验:一键生成大纲,一键生成PPT,一键更换模板!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

FineBI 6.0 Linux 部署、ClickHouse 源配置

文章目录 FineBI 概述FineBI 部署安装环境说明1.下载安装包2.安装3.初始化设置4.登录5.快速入门 启动与关闭启动关闭 ClickHouse 源配置开启驱动上传功能驱动上传数据库连接配置基础表属性设置数据导入 FineBI 概述 FineBI 是一款国产的商业智能(BI)软件…

基于Ultrascale+系列GTY收发器64b/66b编码方式的数据传输(一)——Async Gearbox使用及上板测试

于20世纪80年代左右由IBM提出的传统8B/10B编码方式在编码效率上较低(仅为80%),为了提升编码效率,Dgilent Techologies公司于2000年左右提出了64b/66b编码并应用于10G以太网中。Xilinx GT手册中没有过多64b/66b编码介绍&#xff0c…

生活中的洪特规则

不知道你还记不记得高中物理所学的一个奇特的物理规则:洪特规则。 洪特规则是德国人弗里德里希洪特(F.Hund)根据大量光谱实验数据总结出的一个规律,它指出电子分布到能量简并的原子轨道时,优先以自旋相同的方式分别占…
最新文章