【Python】python进阶篇之文件操作

news2024/12/23 13:36:19

文件操作

在这里插入图片描述

编码格式

python3默认的文件编码就是UTF-8

以下内容来源于AI

编码格式是指将字符、符号、数字等信息转化为二进制形式以便计算机能够理解和处理的规则或标准。在计算机领域,常见的编码格式有 ASCII、Unicode、UTF-8 等。

  1. ASCII(American Standard Code for Information Interchange,美国信息交换标准代码):ASCII 是最早的字符编码标准,它使用 7 位二进制数(共 128 个编码)来表示字符。其中,0-31 的编码用于表示控制字符(如换行符、回车符等),32-127 的编码用于表示可显示的字符(包括字母、数字、标点符号等)。ASCII 编码只适用于英语等使用拉丁字母的语言,不支持非拉丁字母和特殊字符。
  2. Unicode(统一码):Unicode 是一种用于表示字符的国际标准编码。它包含了几乎所有的字符集,涵盖了世界上大多数语言所使用的字符。Unicode 分为不同的编码方案,其中最常用的是 UTF-8、UTF-16 和 UTF-32。
  3. UTF-8(Unicode Transformation Format-8):UTF-8 是一种可变长度的编码方式,它使用 8 位、16 位或 32 位的编码单元来表示字符。UTF-8 兼容 ASCII 编码,即 ASCII 字符使用单个字节表示,而非 ASCII 字符使用多个字节表示。UTF-8 采用变长编码的方式,使用 1-4 个字节来表示不同范围的字符,使得它能够有效地表示任意 Unicode 字符,并且在存储和传输时占用较少的空间。
  4. UTF-16(Unicode Transformation Format-16):UTF-16 采用 16 位的编码单元来表示字符,可以表示 Unicode 字符的所有范围。对于 ASCII 字符和部分非 ASCII 字符,UTF-16 使用 16 位编码单元表示,而对于较大范围的字符,它使用两个 16 位编码单元来表示。UTF-16 分为大端序(Big-Endian)和小端序(Little-Endian)两种方式。
  5. UTF-32(Unicode Transformation Format-32):UTF-32 使用 32 位的编码单元表示字符,无论是 ASCII 字符还是非 ASCII 字符,都使用相同长度的编码单元。UTF-32 的主要优点是每个字符都占用相同的空间,便于处理和索引,但相对于 UTF-8 和 UTF-16,它会占用更多的存储空间。

编码格式在文本处理、网络通信、数据库存储等方面都起着重要的作用。选择适当的编码格式可以确保字符在不同系统之间的正确传输和显示。在实际应用中,常常使用 UTF-8 编码,因为它既能表示全球范围内的字符,又具有较好的兼容性和节省空间的特点。

他们之间有什么关系吗?

这些编码格式之间存在一定的关系和演变过程。下面是它们之间的一些关系:

  1. ASCII 是最早的字符编码标准,定义了常用英语字符和控制字符的编码。后来的 Unicode 和 UTF-8 编码都是在 ASCII 的基础上进行扩展和改进的。
  2. Unicode 是一个字符集,包含了几乎所有语言中的字符,旨在统一全球范围内的字符表示。Unicode 定义了每个字符的唯一标识符(Code Point),但没有规定如何将这些标识符转化为二进制形式存储和传输。
  3. UTF-8、UTF-16 和 UTF-32 是 Unicode 的具体实现方式,它们定义了如何将 Unicode 字符编码为二进制形式,并且规定了字符在存储和传输时所占用的字节数。
  4. UTF-8 是一种可变长度的编码方式,它兼容 ASCII 编码,使用 1-4 个字节来表示字符。UTF-8 在存储和传输时具有节省空间的优势,因此被广泛应用于互联网和计算机系统中。
  5. UTF-16 使用 16 位编码单元来表示字符,可以表示 Unicode 字符的所有范围。它有两种编码方式:大端序(Big-Endian)和小端序(Little-Endian)。
  6. UTF-32 使用 32 位编码单元来表示字符,每个字符都占用相同的空间,便于处理和索引。UTF-32 在某些特定场景下使用,但相对于 UTF-8 和 UTF-16,它会占用更多的存储空间。

总结起来,ASCII 是最早的字符编码标准,Unicode 定义了字符的唯一标识符,而 UTF-8、UTF-16 和 UTF-32 则是 Unicode 的具体实现方式,定义了字符的二进制编码形式和存储规则。UTF-8 是最常用的编码方式之一,具有广泛的应用。

读写原理

读写文件

# 读写文件
def readFile(filePath):
    f = open(filePath, 'r')
    readlines = f.readlines()
    print(readlines)
    for i in readlines:
        print(i.replace("\n", ''))
    f.close()


# 读写文件
def readFile2(filePath):
    f = open(filePath, 'r')
    readlines = f.readlines()
    print(readlines)
    # 此时文件指针已经到达行尾,所以这么写无法读取到内容
    print(f.read())
    # 把文件指针移动到文档首
    f.seek(0)
    print(f.read())
    f.close()


# 写文件
def wirteFile(filePath):
    # 会覆盖原有内容
    f = open(filePath, 'w')
    f.writelines("你好")
    f.close()


# 写文件
def wirteAppendFile(filePath):
    # 追加文件内容
    f = open(filePath, 'a')
    # 如何换行追加
    f.write("你好++")
    f.close()


# 拷贝文件
def copyFile(srcPath, toPath):
    srcfile = open(srcPath, "rb")
    tofile = open(toPath, "wb")
    tofile.write(srcfile.read())
    srcfile.close()
    tofile.close()
    pass


# with语法
def testWith(srcPath):
    with open(srcPath, 'r') as f:
        print(f.read())


if __name__ == '__main__':
    readFile2("1.txt")
    testWith("1.txt")
    # wirteFile("2.txt")
    # wirteAppendFile("2.txt")
    # copyFile("/Users/kw/Documents/python.png", "/Users/kw/Documents/python2.png")

常用的文件打开模式

文件的类型

  • 按文件中数据的组织形式,文件分为以下两大类文本文件 :
    • 存储的是普通“字符”文本,默认为unicode字符集,可以使用记本事程序打开
    • 二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专用的软件打开 ,举例:mp3音频文件,jpg图片 .doc文档等

在这里插入图片描述

文件对象的常用方法

在这里插入图片描述

with语句

基本语法

上下文管理器

with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的

功能类似java中的try-with-reources语句

在这里插入图片描述

示例

class MyContentMgr(object):
    name = '李白'

    def __enter__(self):
        print("MyContentMgr: 执行__enter__方法")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("MyContentMgr: 执行__exit__方法")

    def show(self):
        print("MyContentMgr: 执行show方法", self.name)


with MyContentMgr() as mgr:
    mgr.show()

在这里插入图片描述

os模块

  • os模块是Python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。

  • os模块与os.path模块用于对目录或文件进行操作

os常用函数

在这里插入图片描述

os.path常用函数

在这里插入图片描述

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

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

相关文章

技术管理三板斧第一板斧拿结果-追过程

一、什么是过程管理? 管理就是追求事务的可持续发展,而想要达成这个目标有两个基本点: 管理动作要形成可持续迭代的闭环; 管理动作足够简单到可以复制和个性化升级。 过程管理当然也遵循这个理念。比如你这次 A 项目做得很好&a…

NXP i.MX 8M Plus工业开发板硬件说明书--上册( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)

前 言 本文档主要介绍创龙科技TLIMX8MP-EVM评估板硬件接口资源以及设计注意事项等内容。 创龙科技TLIMX8MP-EVM是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 单核ARM Cortex-M7异构多核处理器设计的高性能工业评估板,由核心板和评估底板组成。ARM Cortex-A5…

FreeRTOS 队列传递结构体、内存块等复合数据类型

1. 队列一般传递的不是单个整型数据或者字符型数据,而是传递结构体或者内存块,一块内存的指针 2. 定义结构体数据类型 /* 定义队列传递的结构类型。 */ typedef struct { unsigned char ucValue; unsigned char ucSource; } xData; /* 声明两个xData类…

使用@RequiredArgsConstructor注入时@Qualifier失效问题

在一个项目中,使用到了 Lombok 的RequiredArgsConstructor注解来注入对象 Service RequiredArgsConstructor public class DeliveryServiceImpl implements DeliveryService {private final ResourceDao resourceDao; }因为ResourceDao接口有两个实现类 Repositor…

5大趋势!牛客CEO叶向宇深度解读《2023春季校园招聘白皮书》

校招并不只是一场求职者与企业间的相互选择,而是一场关乎未来的人才战略布局。 近日,牛客CEO叶向宇在「数智链接 向新而生」牛客青年人才招聘峰会中深度解读了《牛客2023春季校园招聘白皮书》中的5大校招趋势,为我们提供了宝贵的洞察。 01.校…

公司刚上市就来了个从字节拿28K的人,让我见识到了什么才是测试天花板···

5年测试,应该是能达到资深测试的水准,即不仅能熟练地开发业务,而且还能熟悉项目开发,测试,调试和发布的流程,而且还应该能全面掌握数据库等方面的技能,如果技能再高些的话,甚至熟悉分…

对作用域链的理解

一、作用域 作用域,即变量(变量作用域又称上下文)和函数生效(能被访问)的区域或集合 换句话说,作用域决定了代码区块中变量和其他资源的可见性 举个例子 function myFunction() {let inVariable "…

厉害的人都在用的思维导图-思维导图的七大图示

思维导图是一种非常实用的工具,它可以帮助我们更好地组织和表达自己的思想。 在这篇文章中,我将会介绍用ProcessOn完成思维导图的7大图示,并解释它们各自的作用和应用场景。 思维导图是一种非常实用的工具,它可以帮助我们更好地组…

H264码流插入和读取自定义数据(SEI字段)

目录 1. 前言2. H264码流结构2.1 文字说明2.2 码流格式图解 3. 自定义数据封装以及H264码流插入3.1 将自定义数据封装成SEI字段通用格式即可插入H264码流中3.2 编码逻辑 4. 代码5. 总结 1. 前言 本文主要记录,如何在已有的H264码流中插入自定义的数据,并…

商家说:我的对讲机能通话10公里、50公里,你敢信吗?

有不少渠道经销商,在日常经营中往往会遇到用户的经典四问: 您家的对讲机通话距离远吗?待机时间长吗?功能多吗?经得住摔吗? 对讲机用户常问的问题 对于后三问,通常还有电池电量、技术规格、功能…

查找ABAP代码

SE38执行:RS_ABAP_SOURCE_SCAN/RPR_ABAP_SOURCE_SCAN 批量查找字符串使用位置

互联网工程师 Java 面试题及答案整理(2023 速成版,7 天就能吃透)

现在 Java 面试都只是背答案吗? 不背就通过不了面试,但是现在面试都问原理、问场景!Java 面试题就像我们高考时的文言文,包括古诗词,不背是不可能答出来的!当然了,除了背,还得理解&…

全网最牛,性能测试超全流程总结整理,你都遗漏了什么...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、性能需求分析 …

Jenkins自动化构建

自动化构建 Jenkins 是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序 安装依赖 安装参考:Windows环境下安装Jenkins **…

解锁市场潜力:海外网红营销效果最大化的7个关键步骤

在当今数字化时代,海外网红营销已经成为许多企业推广产品和品牌的重要手段。通过与海外网红合作,品牌可以有效地扩大影响力和受众群体,并提升产品或服务的认知度。然而,要实现海外网红营销效果最大化,并不是一件轻而易…

一元函数微分学中导数--定义--意义--基本公式--运算法则

目录 导数的定义 左导数和右导数 导数的几何意义和物理意义 几何意义 导数的几何意义--切线的斜率 物理意义 导数的物理意义——瞬时速度 基本初等函数导数公式 基本初等函数 常用基本初等函数导数公式 导数求解的四则运算法则 函数的求导法则 复合函数求导法则 导…

Linux驱动入门(五)——构建第一个驱动程序

文章目录 前言开发环境配置之内核升级为什么升级内核内核升级 Hello world 驱动程序驱动模块的组成Hello World模块编译Hello World模块模块的操作Hello World模块加载后文件系统的变化 模块参数和模块之间通信模块参数模块的文件格式ELF模块之间的通信模块之间的通信实例 将模…

RHEL 9 新特性及技术演示

OpenSSH:新增禁止 root 的密码登录 Cockpit:RHEL 的 Web 控制台 DNF-3:软件安装方法 NetworkManager:网络管理的主要组件 Nftables:默认的用户空间防火墙 WireGuard:快速、安全的 VPN 隧道&#xff08…

阿里架构师珍藏版“亿级高并发系统设计手册(2023 版)”

高并发 俗话说:罗马不是一天建成的,系统的设计当然也是如此。 从原来谁都不看好的淘宝到现在的电商巨头,展现的不仅仅是一家互联网巨头的兴起,也是国内互联网行业迎来井喷式发展的历程,网络信号从 2G 发展到现在的 5…

【计算机图形学】期末复习Bezier曲线与曲面篇

【计算机图形学】期末复习Bezier曲线与曲面篇 文章目录 【计算机图形学】期末复习Bezier曲线与曲面篇一、Bezier曲线的定义二、一次Bezier曲线(直线)三、二次Bezier曲线(抛物线)四、三次Bezier曲线(自由曲线&#xff0…