Python(白银时代)——文件操作

文件的基本操作

概念

  • 在计算机中,文件是以 二进制 的方式保存在磁盘上的

  • 文本文件  二进制文件

    • 文本文件(用记事本打开能直接能看懂的)

      • 可以使用 文本编辑软件查看

      • 本质上还是二进制的,比如 Python的源码文件

    • 二进制文件(用记事本打开看不懂的)

      • 保存的内容无法直接阅读,而是 提供给其他软件使用

      • 比如:图片、音频、视频 文件等

  • 文件操作的三个步骤

    • 打开文件

    • 读、写文件

      • 读:将文件读入内存

      • 写:将内存中的数据写入文件

    • 关闭文件

操作文件的函数/方法

  • open 函数负责打开文件,并且返回文件对象

    • 如果文件存在,返回文件操作对象

    • 如果文件不存在,会抛出异常

  • read、write、close 需要文件对象来操作

函数说明
open打开文件,并且返回文件操作对象
read将文件内容读取到内存
write将内存中的数据写入文件
close关闭文件

示例

  • 新建一个 aa.txt 文件,内容如下

  • 读取代码如下

# 打开文件
file=open("aa.txt")

# 读取文件
content=file.read()
print(content)

# 关闭文件,如果忘记关闭,会造系统资源消耗,影响后续访问
file.close()

注: 打开文件后,当操作完成后,一定要注意关闭,不然会造成资源消耗,影响后续对文件的访问

输出结果

文件的打开方式

open 函数默认以 只读方式 打开文件,并返回文件对象

语法

file=open("文件名","访问方式")
访问方式说明
r以只读方式打开文件,文件的指针会放在文件的开头。这是默认模式
w以只写方式打开文件,如果文件存在会被覆盖,不存在则会创建文件
a以追加方式打开文件。如果文件存在,文件指针会在结尾,后续以追加内容的方式进行。如果文件不存在,则创建新文件进行写入
r+以读写方式打开文件,文件指针在开头。如果文件不存在,抛异常
w+以读写方式打开文件。如果文件存在会被覆盖。如果不存在,创建新文件
a+以读写方式打开文件。如果文件存在则指针在文件结尾。如果不存在则创建新文件

示例

# 写入文件
file=open("bb.txt","w")
# 写入内容
file.write("aaaaaaaa")
# 关闭文件
file.close()

# 追加内容
file=open("bb.txt","a")
file.write("ccccccc")
file.close()

输出结果

按行读取内容

  • readling 方法可以一次读取一行内容

  • 方法执行后,会把 文件指针 移动到下一行

with + open() 模式 (推荐使用)

  • 这种模式下文件打开之后不需要写入文件关闭函数 close(),程序会在执行完 with 结构体中的程序后自动关闭打开的文件

示例:文件复制

test_list=[]
# 读取文件数据到内存
with open("aa.txt","r") as f:
    # 读取所有行
    for line in f.readlines():
        test_list.append(line)

# 从内存读取数据,写入到文件
with open("cc.txt","w") as f:
    for line in test_list:
        f.write(line)

文件/目录管理

在Python 中,如果希望对 文件或文件夹进行 创建、重命名、删除、查看 等操作,需要导入 os 模块

文件操作

方法名说明 示例
rename重命名文件os.rename(源文件,目标文件)
remove删除文件os.remove(文件名)
mknod

目录操作

方法名说明示例
listdir目录列表os.listdir(目录名)
mkdir创建目录os.mkdir(目录名)
rmdir删除目录 os.rmdir(目录名)
getcwd获取当前目录os.getcwd()
chdir修改工作目录os.chdir(目标目录)
path.isdir判断是否是目录os.path.isdir(目录路径)

注:对文件或者目录的操作, 都支持 相对路径 与 绝对路径

示例

import os
# 在当前目录下 创建一个 目录 aaa
os.mkdir("aaa")
# 在 aaa 目录下创建两个文件
with open("aaa/aaa.txt","w") as f:
    f.write("hhhhhhhhhhhh")
with open("aaa/bbb.txt","w") as f:
    f.write("ddddddddddddd")

# 获取当前目录
dirpwd = os.getcwd()
print(dirpwd)

文本文件的编码

  • 文本文件存储的内容是基于 字符编码 的文件,常见的编码有 ASCII 编码,UNICODE 编码等

    • Python 3.x 默认使用 UTF-8 编码

  • ASCII编码

    • 计算机中只有 256个 ASCII 字符,一个ASCII在内存中占用 1个字节的空间

  • UTF-8 编码

    • 计算机中使用 1~6 个字节来表示一个 UTF-8 字符,涵盖了地球上几乎所有地区的文字

    • 大多数汉字会用 3个字节表示

    • UTF-8 是 UNICODE 编码的一种编码格式

eval 函数

eval() 函数十分强大,将字符串 当成 有效的表达式 来求值 并返回计算结果

示例

# 解析字符串的 数字相加
print(eval("1+2"))

# 解析 列表
print(eval("[1,3,4,5,5]"))
print(type(eval("[1,3,4,5,5]")))

# 解析 字典
print(eval("{'aaa':1,'bbb':2}"))
print(type(eval("{'aaa':1,'bbb':2}")))

输出结果

程序猿与投资生活实录已改名为  程序猿知秋,WX同款,欢迎关注! 

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

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

相关文章

并发编程(六)-AbstractExecutorService源码分析

一、AbstractExecutorService简介AbstractExecutorService是一个抽象类,实现了ExecutorService接口,提供了线程池的基本实现。它是Java Executor框架的核心类,提供了线程池的基本操作,如提交任务、管理线程池、执行任务等。自定义…

阻塞队列(BlockingQueue)的实现和使用

阻塞队列(BlockingQueue) 文章目录阻塞队列(BlockingQueue)阻塞队列的梗概解耦合和削峰填谷java代码实现一个阻塞队列阻塞队列的梗概 众所周知,队列是一种数据结构,符合先进先出的结构,先进先出…

【动态绘图】python可视化--丝滑版

✅作者简介:在读博士,伪程序媛,人工智能领域学习者,深耕机器学习,交叉学科实践者,周更前沿文章解读,提供科研小工具,分享科研经验,欢迎交流!📌个人…

鼎桥通信,拥抱基础创新的“高灵活性”时代

作者 | 曾响铃 文 | 响铃说 伴随数智化转型成为时代变革大方向,一批走在时代前端的数智化转型企业应运而生,不断丰富5G、物联网等新兴技术的应用场景,构建万智互联的产业生态。作为国内通信领域的引领者,鼎桥通信技术有限公司&a…

AF染料试剂Alexa fluor 680 PEG Biotin,AF680 PEG Biotin,荧光强度稳定利于多种荧光标记

文章关键词:AF染料试剂,AF680,PE-Biotin衍生物Alexa fluor 680 PEG Biotin,AF680 PEG Biotin | Alexa fluor 680-PEG-生物素| CAS:N/A | 纯度:95%试剂参数信息: CAS:N/A 外观&am…

docker使用

dokcer 安装 # 1、yum 包更新到最新 yum update # 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2 # 3、 设置yum源 yum-config-manager …

精确性和准确性是两码事儿

准确性(Accuracy)是与正确答案的接近程度,精确性(Precision)是对这个答案的分辨率。 假设,你问我,”现在几点了?” 我抬头看看太阳,然后估算了一下,回答道 “现在是上午 10 点 35 分 22.131 秒” 我给出的是一个足…

Nacos配置中心优雅配置JSON数据格式

在我业务开发中,需要在配置中心配置Json数据,返回给前端。因Nacos默认不支持Json格式配置,需要搭配监听器获取配置中心Json数据,返回给客户端。二、搭配Nacos配置Josn数据1. bootstrap.ymlserver:port: 9000 spring:application:n…

Vue使用ElementUI对table的指定列进行合算

前言 最近有一个想法,就是记录自己花销的时候,table中有一项内容是花销的金额。然后想在table的底部有一项内容是该金额的总计。 然后我就顺着elementui的table组件寻找相关的demo,还真发现了一个这样的demo。 对于这个demo,官方…

SSH框架整合教程

工程目录结构如下&#xff1a; 本工程只介绍SSH整合的基本流程&#xff0c;所以没有写接口 1. 导入jar包 <dependencies><!--hibernate包--><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId>…

【各种安装2】

各种安装2一、八阶段-第四章-案例导入说明1.安装MySQL1.1.准备目录1.2.运行命令1.3.修改配置1.4.重启2.导入SQL3.导入Demo工程3.1.分页查询商品3.2.新增商品3.3.修改商品3.4.修改库存3.5.删除商品3.6.根据id查询商品3.7.根据id查询库存3.8.启动4.导入商品查询页面4.1.运行nginx…

Linux线程同步与互斥(二)/生产消费者模型

⭐前言&#xff1a;本文会先后讲解生产消费者模型、条件变量和基于阻塞队列的生产消费者模型。 1.生产消费者模型 什么是生产消费者模型&#xff1f; 认识生产消费者模型 使用学生&#xff08;消费者&#xff09;&#xff0c;超市&#xff0c;供货商&#xff08;生产者&…

C++ 26 常用算法

目录 一、概述 1.1 常用遍历算法 1.1.1 算法简介 1.1.2 for_each遍历算法 1.1.3 transform遍历算法 1.2 常用查找算法 1.2.1 算法简介 1.2.2 find 查找算法 1.2.3 find_if 查找算法 1.2.4 adjacent_find 查找算法 1.2.5 binary_search 查找算法 1.2.6 count 查找算法…

【面试题】JS的一些优雅写法 reduce和map

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 JS的一些优雅写法 reduce 1、可以使用 reduce 方法来实现对象数组中根据某一key值求和 …

LFM雷达实现及USRP验证【章节3:连续雷达测距测速】

第一章介绍了在相对速度为0时候的雷达测距原理 目录 1. LFM测速 1.1 雷达测速原理 1.2 Chrip信号测速 2. LFM测速代码实现 参数设置 仿真图像 matlab源码 代码分析 第一章介绍了在相对速度为0时候的雷达测距原理&#xff0c;第二章介绍了基于LFM的雷达测距原理及其实现…

数据结构第十一期——线段树的原理和应用

目录 一、前言 二、线段树的概念 1、区间最值问题RMQ (Range Minimum/Maximum Query) &#xff08;1&#xff09;暴力法 &#xff08;2&#xff09;高效的办法&#xff1a;线段树 &#xff08;3&#xff09;把数列放在二叉树上 &#xff08;4&#xff09;查询最小值的复…

43-二叉树练习-LeetCode236二叉树的最近公共祖先

题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它…

一款全新的基于GPT4的Python神器,关键还免费

chartgpt大火之后&#xff0c;随之而来的就是一大类衍生物了。 然后&#xff0c;今天要给大家介绍的是一款基于GPT4的新一代辅助编程神器——Cursor。 它最值得介绍的地方在于它免费&#xff0c;我们可以直接利用它来辅助我们编程&#xff0c;真正做到事半功倍。 注意&#…

k8s实践 | configmapsecretpvpvc

文章目录configmap&secret&pv&pvc一、configMap1、应用场景2、创建configMap2.1、help文档2.2、使用目录创建2.3、根据文件创建2.4、文字创建2.5、直接方法2.6、pod中应用2.7、热更新二、secret1、Service Account2、opaque Secret2.1、创建示例2.2、使用方式三、k…

eNSP 本地AAA配置实验

关于本实验本实验要求将路由器AR1配置为AAA服务器&#xff0c;以本地认证方式对尝试登录AR1的用户进行身份认证和授权。路由器AR2作为登录用户&#xff08;AAA客户端&#xff09;&#xff0c;以Telnet的方式登录AR1.读者需要在AR1中创建一个名为datacom的管理员域&#xff0c;并…