文件的读写基本操作

2023-11-13

一、文件是计算机中数据持久化存储的表现形式

读写文件标准操作格式1:

1、打开文件:file1 = open('文件名','读写模式')
2、操作文件
3、关闭文件:file1.close()

文件操作完毕后必须关闭,否则长期保持对文件的连接状态,造成内存溢出的现象发生

读写文件操作格式2:

# 1、打开文件
file1 = open('demo.txt','w')
# 2、操作文件
file1.write('hello world')
# 3、关闭文件
file1.close()

在这里插入图片描述

1、打开文件:with open('文件名','读写模式')
2、操作文件
3、关闭文件:(自动关闭文件)
#1、打开文件
with open ('dmeo2.txt','w') as file1:
#2、操作文件
    file1.write('hello python')
#3、关闭文件,用 with open是免关闭文件的

在这里插入图片描述

二、文件读写模式

读写模式 功能
r 读取文件内容数据
w 对文件进行数据写入
a 对文件内容数据进行追加
文件不存在 文件存在
( r ) 出现异常 读取文件内数据
(w) 自动创建新文件,并且写入内容数据 覆盖原文件内数据,重新写入
( a ) 自动创建新文件,并且写入内容数据 在原文件内容最后进行数据的追加,并不覆盖

文件不存在的情况下,新建文件,然后将内容写入:

with open('demo3.txt','w') as file:
    file.write('hey')

在这里插入图片描述
文件存在的情况,里面的内容会进行一个覆盖:

with open('demo6.txt','w') as file:
    file.write('hey-hey-hey')

在这里插入图片描述

a模式 ‘a’ append 追加

文件不存在的情况下(新建了一个文件,将内容写入):

with open('d.txt','a') as file:
    file.write('lll-lll-lll')

在这里插入图片描述

文件存在的情况下(在最后追加内容):

with open('d.txt','a') as file:
    file.write('666-666-666')

在这里插入图片描述

r模式 ‘r’ read 读

文件存在的情况下:

with open('d.txt','r') as file:
    data = file.read()
    print(data)

在这里插入图片描述
文件不存在的情况下(不存在读模式):

在这里插入图片描述

完成复制 - 新建一个文件 - 把原来文件读取出来的内容写进新的文件

# 完成复制
file = open('d.txt','r')
data = file.read()
file.close()

# 新建一个文件
file1 = open('d1.txt','w')
file1.write(data)  # 把 d.txt 文件里面的内容读出来,写进新的文件
file1.close()

在这里插入图片描述

关于 编码、解码的读写

因为比如 图片视频,是由二进制组成的,也就是字节(byte) 组成的,而不是字符

读写模式 功能
rb 读取文件内容数据
wb 对文件进行数据写入
ab 对文件内容数据进行追加
文件不存在 文件存在
(rb) 出现异常 读取文件内数据
(wb) 自动创建新文件,并且写入内容数据 覆盖原文件内数据,重新写入
(ab) 自动创建新文件,并且写入内容数据 在原文件内容最后进行数据的追加,并不覆盖
# 完成复制
file = open('zhao.jpg','rb')
data = file.read()
file.close()

# 新建一个文件
file1 = open('女友1号.jpg','wb')
file1.write(data)
file1.close()

在这里插入图片描述

# 完成复制
file = open('视频.wmv','rb')
data = file.read()
file.close()

# 新建一个文件
file1 = open('可以将原视频改名.mp4','wb')
file1.write(data)
file1.close()

文件读写模式 plus

读写模式 功能
r+ 基于 字符 单位的读写模式
w+ 基于 字符 单位的读写模式
a+ 基于 字符 单位的读写模式
rb+ 基于 字节 单位的读写模式
wb+ 基于 字节 单位的读写模式
ab+ 基于 字节 单位的读写模式

加号,就是一个加强版的意思

1、文件读操作

字符模式 参数
read()
read() 数字指定大小
readline()
readlines()
返回值 说明
文件中全部字符数据 内存占用过大
文件中指定数量字符数量 取消结束标志,即读取到空字符
文件中一行字符数据 一行字符数据以结束符为 \n 描述
文件中所有字符数据成为一个列表,每一行字符数据都是一个元素 一行字符数据以结束符为 \n 描述
file = open('1.txt','r')
data = file.read()
print(data)
file.close()

在这里插入图片描述
如果说一个文件里面的内容太多了,read(),会将里面的内容一次性读取出来,负荷太大…

方式1:read(参数)

file = open('1.txt','r')
data = file.read(10) # 一次读取出来的大小,10个字符;空格也属于一个字符
print(data)
file.close()

在这里插入图片描述
可以选择循环读取,

file = open('1.txt','r')
while True:
    data = file.read(3)  # 一般情况下,这里的参数是 1024 
    print(data)
    if len(data) == 0:
       break
file.close()

在这里插入图片描述
方式2:readline() >>> 每次读取一行

file = open('1.txt','r')
while True:
    data = file.readline()
    print(data)
    if len(data) == 0:
        break
file.close()

在这里插入图片描述
方式3:文件中所有字符数据成为一个列表,每一行字符数据都是一个元素 >>> 第1行是列表里的第一个元素,第2行是列表里的第2个元素

file = open('1.txt','r')
data = file.readlines()
print(data)
file.close()

在这里插入图片描述

2、文件写操作

字符模式 参数 / 作用
write 字符串 / 将字符串内容写入文件
writelines 仅包含字符信息的存储模式(列表、元组、集合、字典键)/ 将存储模型中的字符信息写入文件
	# 1、打开文件
file = open('hello.txt','w')
	# 2、操作文件
file.write('hello world')
	# 3、关闭文件
file.close()

在这里插入图片描述
在这里插入图片描述
读:

file = open('hello.txt','r')
data = file.readlines()
print(data)
file.close()

在这里插入图片描述

	# 1、打开文件,先读取
file = open('hello.txt','r')
data = file.readlines()
print(data)
file.close()

	# 复制到一个新的文件中
file1 = open('hellohello.txt','w')
file1.writelines(data)  # write >> 字符串
file1.close()

在这里插入图片描述

  • 纯文本编辑得到的文件读写使用字符模式
  • 非纯文本编辑得到的文件读写使用字节模式

推荐: 字节模式 >> 字符模式

三、文件路径

  • 绝对路径(从头开始算的,就叫做 绝对路径)
  • 相对路径(相对来说的)

有个关于相对路径的表示法需要说明一下:

./../../         # 前面的点表示当前位置,后两个点表示上一级,再后面两个点表示上一级的上一级

./demo1/demo2/demo3/666.txt    # 表示当前目录的下一级demo1的下一级demo2的下一级demo3中的文件 666.txt

所以,上面只需要写点点点,表示上一级 上一级;下面表示下一级下一级,就需要写具体的文件名了

四、文件操作 – OS模块

函数名 说明
rename(文件1,文件2) 文件名更改,从文件1改为文件2
remove(文件名) 删除文件
mkdir(目录名) 创建目录
rmdir(目录名) 删除目录
import os

	# 文件的改名 rename(文件1,文件2)  文件名更改,从文件1改为文件2
os.rename('demo1.txt','./../demo9.txt')

	# 删除文件 
os.remove('./../demo2.txt')

	# 创建目录 mk >> make dir
os.mkdir('./../demo2')

	# rmdir 删除目录
os.rmdir('./../demo2')

注意:删除文件 和 删除目录 是两个东西

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件的读写基本操作 的相关文章

  • 努力理解 Python 需要虚拟环境的原因

    我来自 JavaScript 所以熟悉 NPM 在那里 您可以全局安装包 通过使用 g 标志 或在项目中本地安装包 在 Python 中 他们有这些虚拟环境 我仍然有点不确定为什么需要它们 我知道这是为了在一台机器上拥有不同版本的相同包 是
  • 使用中序和前序遍历输出二叉树

    class Node def init self data left None right None self data data self left left self right right def inorderTraversal r
  • Python 中的 if len(list)

    我正在将 Python 代码转换为 C 代码 以便利用 HPC 系统上可用的并行性 最初的程序员在 Python 中使用了一个令我困惑的条件 if rnum lt gt current res alim 0 if len f alim f
  • 无法更改现有 Keras 模型中的激活

    我有一个普通的 VGG16 模型relu激活 即 def VGG 16 weights path None model Sequential model add ZeroPadding2D 1 1 input shape 3 224 224
  • brew install python,但随后:“python-2.7.6 已安装,只是未链接”

    免责声明 菜鸟 操作系统 10 8 5 当我在 bash 中安装 python 时 我得到了这个警告和错误 https i stack imgur com TBgBT png Warning Could not link python Un
  • 安装 python-dev 和链接库后,Cython 中的 Hello World 程序因 gcc 失败

    我创建了一个简单的 hello world 程序 并尝试使用 gcc 执行生成的 C 程序 但无论我做什么 我都会得到大量未定义的引用 SO 有很多类似的问题 但他们都说安装 python dev 或其某些变体 或添加用于链接和加载库的标志
  • 如何在 Windows 和 Python 2.7 上模拟 os.path.samefile 行为?

    给定两个路径 我必须比较它们是否指向同一个文件 在 Unix 中 这可以通过以下方式完成os path samefile 但正如文档所述 它在 Windows 中不可用 模拟此功能的最佳方法是什么 它不需要模拟常见情况 就我而言 有以下简化
  • lmfit 最小化失败并出现 ValueError:数组太大

    我正在尝试使用 暴力 方法来最小化 20 个变量的函数 它因神秘错误而失败 这是完整的代码 import random import numpy as np import lmfit def progress update params i
  • 如何在 difflibs html 输出中突出显示每行超过两个字符

    我在用difflib HtmlDiff比较两个文件 我希望在输出的 html 中突出显示差异 当一行中最多有两个不同的字符时 这已经有效 a 2 000 b 2 120 但是 当一行上有更多不同的字符时 在输出中整行将被标记为红色 在左侧
  • 使用 Python 从基于 AJAX 的网站提取信息

    我正在尝试使用 Python 检索基于 ajax 的网站 例如 www snapbird org 上的查询结果 由于它没有显示在页面源中 我不确定如何继续 我是一个Python新手 因此如果我能得到一个指向正确方向的指针那就太好了 如果更容
  • 如何删除Python中特定字符之前的所有字符?

    我想删除指定字符或字符集之前的所有字符 例如 intro lt gt I m Tom 现在我想删除 lt gt before I m 或者更具体地说 I 有什么建议么 Use re sub 只需匹配所有字符即可I然后将匹配的字符替换为I r
  • 修改Keras中的层权重

    我正在尝试修改 Keras 中某个层的输出 我有一个编码器 它将时间序列转换为潜在空间 之后 对于每个压缩的时间序列 我想向时间序列添加一些数字 例如我有 input d Input 100 h1 d Reshape 100 1 input
  • 使用 BeautifulSoup 查找 html 中的所有表

    我想使用 BeautifulSoup 查找 html 中的所有表格 内部表应包含在外部表中 我创建了一些有效的代码 并且它给出了预期的输出 但是 我不喜欢这个解决方案 因为它使用 decompose 这会破坏 汤 对象 你知道如何以更优雅的
  • 如何在python中将所有参数转换为字典

    我想要我的功能func args kwargs 返回一本字典 其中包含我提供给它的所有参数 例如 func arg1 arg2 arg3 value3 arg4 value4 应该返回一本这样的字典 arg1 value1 arg2 val
  • 使用 str 方法替换 string 中的多个元素

    我正在尝试编写一个函数 它接受一串 DNA 并返回赞美 我已经尝试解决这个问题有一段时间了 并浏览了 Python 文档 但无法解决 我已经为该函数编写了文档字符串 以便您可以看到答案应该是什么样子 我在这个论坛上看到过类似的问题 但我无法
  • Python带有负数的排序列表[重复]

    这个问题在这里已经有答案了 为了尝试通过练习来学习Python 我正在尝试使用Python来实现和测试快速排序算法 实现本身并不困难 但是排序的结果有点令人费解 当我对列表进行排序时 35 1 2 7 8 3 4 20 6 53 结果给了我
  • 如何从本地计算机或网络资源在 Jupyter Notebook 中嵌入图像或图片?

    我想将图像包含在 jupyter 笔记本中 如果我执行以下操作 它会起作用 from IPython display import Image Image img picture png 但我想将图像包含在 markdown 单元格中 并且
  • 使用 NumPy 函数计算 Pandas 的加权平均值

    假设我们有一个像这样的 pandas 数据框 a b id 36 25 2 40 25 3 46 23 2 40 22 5 42 20 5 56 39 3 我想执行一个操作 a div b 然后按 id 分组 最后使用 a 作为权重计算加权
  • Numpy:查找两个 3-D 数组之间的欧几里德距离

    给定两个维度为 2 2 2 的 3 D 数组 A 0 0 92 92 0 92 0 92 B 0 0 92 0 0 92 92 92 如何有效地找到 A 和 B 中每个向量的欧几里得距离 我尝试过 for 循环 但速度很慢 而且我正在按 g
  • 就地改变 numpy 函数输出数组

    我正在尝试编写一个对数组执行数学运算并返回结果的函数 一个简化的例子可以是 def original func A return A 1 A 1 为了加速并避免为每个函数调用分配新的输出数组 我希望将输出数组作为参数 并就地更改它 def

随机推荐

  • 网络安全笔记7——防火墙技术

    网络安全笔记7 防火墙技术 参考课程 中国大学MOOC 网络安全 北京航空航天大学 文章目录 网络安全笔记7 防火墙技术 防火墙概述 防火墙的类型及结构 防火墙的发展史 防火墙的分类 OSI模型与防火墙的关系 静态包过滤防火墙 操作 工作原
  • es的配置文件(elasticsearch.yml)

    config目录下有2个配置文件 es的配置文件 elasticsearch yml 和日志配置文件 logging yml cluster name elasticsearch 配置es的集群名称 默认是elasticsearch es会
  • arduino IDE搭建ESP8266开发环境和简单使用

    arduino IDE搭建ESP8266开发环境和简单使用 文章目录 arduino IDE搭建ESP8266开发环境和简单使用 安装 下载IDE 在Arduino IDE上安装esp8266库 下载安装esp8266库 使用 选择开发板
  • Java进阶3 - 易错知识点整理(待更新)

    Java进阶3 易错知识点整理 待更新 该章节是Java进阶2 易错知识点整理的续篇 在前一章节中介绍了 ORM框架 中间件相关的面试题 而在该章节中主要记录关于项目部署中间件 监控与性能优化等常见面试题 文章目录 Java进阶3 易错知识
  • 使用mybatis-plus的insert方法遇到的坑(添加时id值不存在异常)

    在使用mybatis plus的insert方法的时候 报错 java sql SQLException Field id doesn t have a default value 后来了解到使用mybatis plus的insert方法
  • 05-2_Qt 5.9 C++开发指南_Model/View结构实例(QFileSystemModel、QStringListModel、QStandardItemModel;编程实例)

    接上篇 本篇主要介绍Model View框架下的模型类 QFileSystemModel QStringListModel QStandardItemModel的使用方法和编程实例 文章目录 1 QFileSystemModel 1 1 Q
  • 「拓数派(OpenPie)2022 发布会实录 」PieCloudDB Database 优化器

    10 月 24 日程序员节 拓数派 Openpie 发布了云原生数据库 PieCloudDB PieCloudDB 以云计算架构为设计基础 实现云上存算分离 打造了 元数据 计算 存储 分离三层架构 在计算层 PieCloudDB 设计了高
  • Microsoft Store 微软商店无法加载在页面解决

    导致此原因主要是因为你的电脑开启过vpn 开启了系统代理 导致微软商店无法加载 解决方法 1 第一步 开始 设置 2 第二步 网络和internet 3 第三步 点击代理 关闭手动代理服务器这一项 然后再打开微软商店 就可以了
  • Dvwa页面标红问题的逐步攻破(二)

    提示 第二个问题花了很长时间 试了很多种办法 都没成功 但是经过后续的操作我发现第二个问题并没有太大的影响 那就说一下在此过程中遇到的问题及解决吧 解决PHP module gd MIssing Only an issue if you w
  • HTML超链接标签

    一 超链接标签 a 的语法 a href 链接路径 target self 链接文本或图像 a 1 a 标签中href属性值是链接的路径 当href 时表示一个空连接 2 a 标签中target属性值表示的是链接在哪个窗口打开 它的常用值是
  • rlwrap

    rlwrap for Command Line History and Editing in SQL Plus and RMAN on Linux linux下安装后 用着确实方便 AIX下能用吗 more http www oracle
  • 【语义分割】13、SegNeXt

    文章目录 一 背景 二 方法 2 1 Convolutional Encoder 2 2 Decoder 三 效果 论文 SegNeXt Rethinking Convolutional Attention Design for Seman
  • 详解多线程中的互斥量;mutex头文件,lock与unlock ,lock_guard,unique_lock

    互斥量 假如你有一张水卡 要放在卡槽才能出水 现在你和小明都要热水 于是你接一下热水 用自己的水卡 他又接一下热水 巧了 两人都接到泡面的热水 互斥量是在Mutex的头文件中 并发的优点 可以极的减少时间 并且能够多个进程的运行东西 并发的
  • pca处理后建模 sklearn_汽油辛烷值建模

    题目来源 2020年研究生数学建模竞赛B题 小编第一次做研究生的竞赛题目 我的整体感受 首当其冲的是 关于题的描述很多 每一个题的页数都有好几页 说下关于B题 汽油辛烷值建模 的思考 就B题的难易程度来说 这个题太容易了 不论从数据量 还是
  • 26.kotlin的get和set方法

    1 kotlin类中的get和set方法 fun main args Array
  • 数据结构--二叉树进阶

    因为我们之前在学习数据结构的时候使用的是C语言 但是并不是所有的数据结构都适合使用C语言学习 如今我们了解了C 的基础语法 具备了学习这些稍微难一点的数据结构的前提 所以我们再次回顾数据结构 使用C 这一更加先进的武器 来解决更加复杂的问题
  • 线程池的几种常见的创建的方式

    每次启动一个线程都要创建一个新的浪费资源的 还有时候线程过多的时候回造成服务器崩溃 所以有了线程池的诞生 线程池是用来管理线程的 下面是常用的几种创建线程的方式 一 创建大小不固定的线程池 这是一个线程类 public class Thre
  • 2020-11-26【路灯】动态规划

    2020 11 26 路灯 动态规划 题目描述 一条长l的笔直的街道上有n个路灯 若这条街的起点为0 终点为l 第i个路灯坐标为ai 每盏灯可以覆盖到的最远距离为d 为了照明需求 所有灯的灯光必须覆盖整条街 但是为了省电 要使这个d最小 请
  • SpringCloud Ribbon客服端负载均衡

    Ribbon与Nginx区别 服务器端负载均衡Nginx nginx是客户端所有请求统一交给nginx 由nginx进行实现负载均衡请求转发 属于服务器端负载均衡 既请求有nginx服务器端进行转发 客户端负载均衡Ribbon Ribbon
  • 文件的读写基本操作

    一 文件是计算机中数据持久化存储的表现形式 读写文件标准操作格式1 1 打开文件 file1 open 文件名 读写模式 2 操作文件 3 关闭文件 file1 close 文件操作完毕后必须关闭 否则长期保持对文件的连接状态 造成内存溢出