Python学习基础笔记十二——文件

news2025/7/23 8:09:02

1、目的:是要将数据永久地保存下来,就需要将数据永久保存在硬盘中。

2、概念:文件就是操作系统提供给应用程序来操作硬盘虚拟接口,用户或应用程序通过操作文件,可以将自己的数据永久地保存下来。

3、步骤;

1)打开文件,得到一个文件句柄,并赋值给一个变量。

2)通过句柄对文件进行操作。

3)关闭文件。

4、Open函数:

 

mode参数解释
r读(默认)
w
a在文件最后位置追加内容
b二进制模式
+以读和写的方式打开文件,便于更新文件

看几个例子:

# 读模式,将log中内容一次性读出
f = open('log', mode='r', encoding='utf-8')
content = f.read()
print(content)
f.close()

# 写方式,清空内容然后再写入
f = open('log', mode='w', encoding='utf-8')
f.write('abcdefg')
f.close()

# 在文件内容后追加写入
f = open('log', mode='a', encoding='utf-8')
f.write('abcdefg')
f.close()

说明:

打开一个文件包含两个部分的内容,操作系统级打开的文件和应用程序级的变量。在操作完毕一个文件时,必须把与该文件的相关的这两部分资源文件进行回收。对于操作系统打开的文件,使用f.close()进行回收,对于应用程序级的变量,应使用def f(Python有自动的垃圾回收机制,所以不需要考虑del f)。

建议使用with关键字来帮助管理上下文,系统会自动为我们关闭文件和处理异常。

with open('log', mode='w', encoding='utf-8') as f:
    f.write('Hello, Python.')

编码:encoding=是我们为open指定编码,但如果我们没有指定,那么打开的文件默认编码就是操作系统默认的编码:在windows下是GBK,在Linux下是UTF-8。为了保证不出现乱码,我们必须让读文件和写文件使用的编码一致。

5、文件的操作方式:

方法名称功能
f.read()读取所有内容,以字符为最小单位。
f.readline()读取一行内容
f.readlines()读取每一行内容,存放在列表中
f.write()写信息
f.write(''1111\n2222\n'.encode('utf-8')针对b模式的写
f.writelines()文件模式
f.readable()判断文件是否可读
f.writable()判断文件是否可写
f.closed()文件是否关闭
f.encoding如果文件打开模式是b,则没有该属性
f.flush()立即将文件内容从内存刷到硬盘
f.seek()按字节移动光标
f.tell()读取光标位置
f.truncate截取文件

例1: 基于seek实现类似Linux命令tail -f的功能。

import time

with open('log', mode='rb') as f:
    f.seek(0, 2)
    while True:
        line = f.read()
        if line:
            print(line.decode('utf-8'), end='')
        else:
            time.sleep(0.2)

当在log追加新的内容时,新内容就会被程序立即打印出来。

例2:修改文件。

with open('log', encoding='utf-8') as read_f, open('log.bak', 'w', encoding='utf-8') as write_f:
    data = read_f.read()    # 全部读入内存,建议文件不要太大
    data = data.replace('chang', 'wang')   # 在内存中完成修改

    write_f.write(line)   # 一次性写入新文件

import os
os.remove('log')                  # 将原文件进行删除
os.rename('log.bak', 'log')       # 将log.bak文件重命名为log

如果文件很大:

with open('log', encoding='utf-8') as read_f, open('log.bak', 'w', encoding='utf-8') as write_f:
    for line in read_f:
        if 'chang' in line:
            line = line.replace('chang', 'wang')
    
        write_f.write(line)

import os
os.remove('log')                  # 将原文件进行删除
os.rename('log.bak', 'log')       # 将log.bak文件重命名为log

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

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

相关文章

MACU-Net-用于精细分辨率遥感图像语义分割网络

摘要: 在本文中我们结合了由不同层次的U-Net生成的多尺度特征,设计了一个多尺度跳跃连接和基于非对称卷积的网络--MACU-Net。 网络具有以下几个优点1)多尺度跳跃连接将低层和高层特征图中包含的语义特征结合并重新进行排列2)非对…

一文搞懂傅里叶级数与变换

描述 这篇文章的目标:以最简单易懂的方式,让大家学会傅里叶变换! 为什么要写一篇关于傅里叶变换相关知识的文章呢。有两个原因: 一、这个知识很有趣,可以理解它是一件炫酷的事情。在工作中,一次分享会同事…

BufferPool缓存机制

BufferPool缓存机制 1、更新数据流程 流程图 sql更新数据刷到磁盘前会经过serve层 连接器-管理连接和权限校验优化器-语法词法分析优化器-执行计划生成索引选择执行器-连接bufferPool 1.1 流程步骤 从磁盘加载数据到buffer pool,会先去判断要更新的数据所在数据…

Hantek6022BE 虚拟示波器

​ 0. Hantek 厂家提供的介绍 安装方法按照说明来。 很多人都说原厂的软件不好用,于是折腾就开始了: 1. VIRTINS Multi-Instrument 这个别人已经写的很详细了 大概需要准备 Multi-Ins 这软件,目前找到 3.7 的合用 菜单里 添加设备到库&a…

HTML+CSS详细知识点复习(上)

文章目录一、初识HTML1、标签概述二、初识CSS1、CSS核心基础2、设置文本样式3、高级特性4、CSS的优先级三、CSS选择器1、关系选择器四、盒子模型1、边框属性2、边距属性3、背景属性4、盒子的宽与高5、CSS3新增盒子模型属性一、初识HTML HTML(超文本标记语言&#x…

用Python采集世界杯球队热搜数据 并发送邮箱通知

前言 嗨嗨,最近世界杯的热度可是一直在增长啊 待会就是 卡塔尔和塞内加尔打了 怎么说 还是有点期待结果的 趁现在有点无聊 就想着用Python采集世界杯球队热搜数据 顺便 发送邮箱通知 话不多说,马上开始 知识点 动态数据抓包requests发送请求json数据…

【Proteus仿真】【51单片机】智能雨刷器设计

文章目录一、主要功能二、硬件资源三、软件设计四、实验现象联系作者一、主要功能 本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶模块、按键模块、雨滴传感器、ADC、LED模块等。 主要功能: 系统运行后,LCD1602显示雨刷器当前模式、…

如何制定测试团队度量体系

1、前言 每当月底或一个季度结束,公司或项目都会进行考核指标的统计,来总结每个组员在这个阶段的工作产出与绩效成绩。 那么制定哪些指标最为标准,最为专业,同时针对整个项目组都是公平的,这个就需要每个公司或项目根…

Python入门

目录 一、Python安装及环境搭建 二、Python运用(数据类型) 基本数据类型 引用数据类型 一、Python安装及环境搭建 Python环境安装包下载 https://www.python.org/ https://www.python.org/downloads/windows/ Python开发工具PyCharm下载 https://www.…

南卡和FIIL 哪个更好用?南卡和FIIL CC nano蓝牙耳机对比测评

作为一个狂热的蓝牙爱好者,我也用了不少蓝牙耳机了,真的是对蓝牙耳机爱不释手。自从蓝牙耳机出现以来,我们都看到了它的迅速发展,尤其是这两年,蓝牙耳机越来越受欢迎,已经取代了传统的有线耳机,…

1-10嵌入式Linux系统开发与应用|嵌入式Linux|第三章 Linux编程环境

目录 1.掌握Linux常用的基本命令功能、语法结构和用法示例 1.1linux编程环境 1.1.1系统平台环境 linux平台特性 1.1.2开发工具环境 1.1.3基于文模式的开发平台 1.1.4集成开发平台EclipseCDT 1.1.5文档帮助环境 1.2常用编辑器 1.2.1VIM编辑器 1.VIM的模式 2.VIM的启…

爆冷?黑马?这次用python来给你推测一波.....

人生苦短 我用python 在刚刚结束的2022年卡塔尔世界杯E组第一轮一场比赛中, 德国队爆冷1:2不敌日本队。 上半场,日本队门将权田修一出击扑倒劳姆送点, 京多安主罚命中先拔头筹; 下半场,堂安律门前补射为日本队扳平…

如何裁剪视频画面?快来看看这个详细教程

有什么简单的方法可以裁剪视频?现在有很多小伙伴都会在社交平台上发布自己的视频内容,分享自己的日常,那在编辑视频的时候肯定是会对视频内容进行剪切的,那么怎么裁剪视频呢?有哪些简单的方法可以裁剪视频呢&#xff1…

Selenium基础 — TMLTestRunner测试报告

目录 1、HTMLTestRunner介绍 2、HTMLTestRunner的使用 3、测试报告示例 4、封装成模块 1、学习思路和方法 2、想学习却无从下手,该如何学习? 3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件.... 4、有了安装包和学习资料&#x…

javaweb JAVA JSP零食销售系统购物系统ssm购物系统购物商城系统源码(ssm电子商务系统)网上零食在线销售

JSP零食销售系统购物系统ssm购物系统购物商城系统源码(ssm电子商务系统)网上零食在线销售

[网络工程师]-应用层协议-DNS

域名系统(Domain Name System,DNS)是把主机域名解析成IP地址的系统,解决了IP地址难记的问题。该系统由解析器和域名服务器组成。DNS主要基于UDP协议,较少情况下使用TCP协议,端口号均为53。域名系统由三部分组成&#x…

解决Mybatis-Plus或PageHelper多表分页查询总条数不对问题

Mybatis-Plus版本3.4之后,对分页查询进行了优化 对于单表查询是没有问题的。而需要多表关联查询(自写sql)时,就会查询调用Mybatis-Plus的 .page(E page, Wrapper queryWrapper); 方法是就就会出现查询总数不对问题。 业务需要查…

[论文评析]MediaPipe Hands: On-device Real-time Hand Tracking, ArXiv,2020

MediaPipe Hands: On-device Real-time Hand Tracking论文信息简介Mediapipe Hands手掌检测器BlazePalm Detector手部骨骼检测Hand Landmark Model数据集构造应用References论文信息 论文题目:MediaPipe Hands: On-device Real-time Hand Tracking 发表&#xff1a…

STM32 IAP相关的FLASH数据读取和跳转

IAP操作一、STM32 FLASH 分区二、BootLoader程序三、UserAPP程序四、Flash数据的读取五、BootLoader到UserAPP的跳转一、STM32 FLASH 分区 以STM32G484RE举例,固件烧录到FLASH的起始地址进行保存,理论上可烧录的最大文件为512Kb,实际项目中固…

动态域名解析

众所周知,如果计算机想参与互联网通讯,无论是作为一台执行资源访问的客户端还是作为一台被访问的资源提供服务器,计算机必须分配一个合法的IP地址。这个地址通常由互联网服务商提供(在中国通常是电信部门) 这种IP地址…