Python基础:18、Python文件操作

1)文件的编码
  1. 什么是编码?

    编码就是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。

    编码有许多中,我们最常用的是UTF-8编码

  2. 为什么需要使用编码?

    计算机只认识0和1,所以需要将内容翻译成0和1才能保存在计算机中。

    同时也需要编码, 将计算机保存的0和1,反向翻译回可以识别的内容

2)文件的读写

打开、关闭、读、写

1.open() 打开函数

open(name, mode, encoding)
open("文件路径", "打开文件的模式",encoding="编码格式")

name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。

mode:设置打开文件的模式(访问模式):只读、写入、追加等。

encoding:编码格式(推荐使用UTF-8)

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。 如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。 如果该文件不存在,创建新文件进行写入。

read()方法

文件对象.read(num)

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

readlines()方法

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

readline()方法

一次读取一行内容

# 打开文件
f = open("C:/Users/Lenovo/Desktop/txt/1.txt", "r", encoding="gbk")
print(type(f))
​
# 读取文件 - read()
# Read = f.read(10)
# print(f"读取10个字节的结果是:{Read}")
# print(f"read()方法读取的结果是:{f.read()}")
​
# 读取文件 - readLines()
# lines = f.readlines()
# print(f"lines对象的类型是:{type(lines)}")
# print(f"lines对象的内容是:{lines}")
​
# 读取文件 - readLine()
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(f"第一行数据是:{line1}")
print(f"第二行数据是:{line2}")
print(f"第三行数据是:{line3}")
​
# for循环读取文件行
for line in f:print(f"每一行数据是:{line}")
​
# 文件的关闭
f.close()

注意:文件读取完成后,要使用文件对象.close()方法关闭文件对象,否则文件会被一直占用

with open方法

# with open 语法操作文件    执行完程序后会自动的close
with open("C:/Users/Lenovo/Desktop/txt/1.txt", "r", encoding="gbk") as f:for line in f:print(f"with open每一行数据是:{line}")

总结:

操作功能
文件对象 = open(file, mode, encoding)打开文件获得文件对象
文件对象.read(num)读取指定长度字节 不指定num读取文件全部
文件对象.readline()读取一行
文件对象.readlines()读取全部行,得到列表
for line in 文件对象for循环文件行,一次循环得到一行数据
文件对象.close()关闭文件对象
with open() as f通过with open语法打开文件,可以自动关闭

例子:

"""
通过文件读取操作,统计itheima单词出现的次数
​
itheima itcast python
itheima python itcast
beijing shanghai itheima
shenzhen guangzhou itheima
wuhan hangzhou itheima
zhengzhou bigdata itheima
​
"""
f = open("F:/Vscode-project/Python_project/Word.txt", "r", encoding="utf-8")
# 方式1,读取全部内容,通过字符串count方式统计itheima单词的数量
# Read = f.read()
# print(f"文件的内容是:{Read}")
#
# count = Read.count("itheima")
# print(f"单词itheima在文件中出现的次数是:{count}次")
​
# 方式2:一行行读取
count = 0
for line in f:line = line.strip()  # 去除首尾的空格以及换行符words = line.split(" ")for word in words:# 判断单词出现的次数累计if word == "itheima":count += 1
​
print(f"单词itheima在文件中出现的次数是:{count}次")
​
# 关闭文件
f.close()
单词itheima在文件中出现的次数是:6次

3)文件的写入

# 1. 打开文件

f = open('python.txt', 'w')

 # 2. 文件写入

f.write('hello world')

 #3.内容刷新

f.flush()

注意:

  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区

  • 当调用flush的时候,内容会真正写入文件

  • 这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)

# 打开文件,不存在的文件
f = open("F:/Vscode-project/Python_project/test_txt/2.txt", "w", encoding="UTF-8")
​
# write写入
f.write("hello world!")  # 内容写到内存中
​
# flush刷新
f.flush()      # 将内存中积攒的内容,写入到硬盘的文件中
​
# 关闭文件
f.close()      # close的方法,内置了flush的功能
  1. 写入文件使用open函数的”w”模式进行写入

  2. 写入的方法有:

    •wirte(),写入内容

    •flush(),刷新内容到硬盘中

  3. 注意事项:

  • w模式,文件不存在,会创建新文件

  • w模式,文件存在,会清空原有内容

  • close()方法,带有flush()方法的功能

4)文件的追加

注意:

  • a模式,文件不存在会创建文件

  • a模式,文件存在会在最后,追加写入文件

# 打开文件,不存在的文件
f = open("F:/Vscode-project/Python_project/test_txt/3.txt", "a", encoding="UTF-8")
​
# write写入
f.write("hello world!")  # 内容写到内存中
​
# flush刷新
f.flush()      # 将内存中积攒的内容,写入到硬盘的文件中
​
# 关闭文件
f.close()      # close的方法,内置了flush的功能
​
# 打开文件,存在的文件
f = open("F:/Vscode-project/Python_project/test_txt/3.txt", "a", encoding="UTF-8")
​
# write写入
f.write("你好,世界!")  # 内容写到内存中
​
# flush刷新
f.flush()      # 将内存中积攒的内容,写入到硬盘的文件中
​
# 关闭文件
f.close()      # close的方法,内置了flush的功能
  1. 追加写入文件使用open函数的”a”模式进行写入

  2. 追加写入的方法有(和w模式一致):

    wirte(),写入内容

    flush(),刷新内容到硬盘中

  3. 注意事项:

    a模式,文件不存在,会创建新文件

    a模式,文件存在,会在原有内容后面继续写入

    可以使用”\n”来写出换行符

5)文件操作的综合案例

例子:文件备份

# 完成文件的备份,将测试部分数据丢弃
# 打开bill.txt文件
f1 = open("F:/Vscode-project/Python_project/test_txt/bill.txt", "r", encoding="UTF-8")
​
# 打开bill.txt.bak文件
f2 = open("F:/Vscode-project/Python_project/test_txt/bill.txt.bak", "w", encoding="UTF-8")
​
# 循环读取f1的内容
for line in f1:line = line.strip()# 写入内容if line.split(",")[4] == "测试":continue
​f2.write(line)# 由于前面的内容进行了strip()的操作,需要手动的写出换行符f2.write("\n")
​
# 关闭f1,f2
f1.close()
f2.close()

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

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

相关文章

Ubuntu20.04卸载ros2 foxy版本安装ros1 noetic版本

前言 如果你ubuntu中没有ros,可以试着直接从鱼香ros一键安装包指令处开始。 卸载ros2 sudo apt-get remove ros-*接下来如果你直接使用鱼香ros的一键安装命令,会出错。 设置源 设置源,这里使用的是中科大的。 sudo sh -c . /etc/lsb-r…

GRU--详解

GRU(Gated Recurrent Unit)(门控循环单元)是RNN(循环神经网络)的一种变体。GRU的设计简化了另一种RNN变体——LSTM(长短期记忆网络),与LSTM不同的是,GRU将输入…

【OpenGauss源码学习 —— (VecSortAgg)】

VecSortAgg 概述SortAggRunner::SortAggRunner 函数SortAggRunner::init_phase 函数SortAggRunner::init_indexForApFun 函数SortAggRunner::set_key 函数BaseAggRunner::initialize_sortstate 函数SortAggRunner::BindingFp 函数SortAggRunner::buildSortAgg 函数SortAggRunne…

python从0快速上手(一)python环境搭建 windows macos linux

Python环境搭建超详细指南 Python是一种广泛使用的高级编程语言,它以其简洁的语法和强大的功能而受到开发者的喜爱。对于初学者来说,搭建一个合适的Python开发环境是开始Python之旅的第一步。本文将为你提供一个超级详细的Python环境搭建指南&#xff0…

基于SpringBoot+Vue+Uniapp家具购物小程序的设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而…

3个方法快速恢复微信已过期或被清理图片

微信作为现在国内用户数量最多的社交软件,已经成为了许多人日常生活和工作中必不可少的一部分。但微信中的图片有时会因为多种原因而消失,如过期、被清理或者误删。遇到这种情况,那么已过期或被清理的图片还能恢复吗?下面小编就来…

学习之上下文管理器

one_file open(demo.txt, w) one_file.write("xxxxx") # raise ValueError # 如果抛出异常将会报错 one_file.close()with open(demo.txt, w) as f: # open--返回的是IO--IO中实现了__enter__方法和__exit__方法f.write("aaaa")class MyContextManger:d…

论文速读:通过目标感知双分支蒸馏进行跨域目标检测(CVPR2022)

原文标题:Cross Domain Object Detection by Target-Perceived Dual Branch Distillation 中文标题:通过目标感知双分支蒸馏进行跨域目标检测 论文地址: https://arxiv.org/abs/2205.01291 代码地址: GitHub - Feobi1999/TDD 这篇…

做个工作中的退让者,生活中的前进者

先来分享一下什么是退让者原则,退让者原则,也被称为“幸福者退让原则”,是一种在面对冲突和挑衅时采取的策略,其核心理念是在拥有幸福生活的背景下,选择退让而非直接对抗,以保护个人及家庭幸福为优先。 为…

在IDEA中配置Selenium和WebDriver

前言: 在当今自动化测试和网络爬虫的领域,Selenium是一个被广泛使用的工具。它不仅能够模拟用户与浏览器的交互,还能进行网页测试和数据抓取。而为了使用Selenium与谷歌/Edge浏览器进行自动化测试,配置合适的WebDriver至关重要。本…

【前端】Bootstrap:栅格系统 (Grid System)

Bootstrap的栅格系统是该框架的核心部分之一,能够让开发者轻松创建响应式网页布局,适配各种屏幕尺寸和设备。栅格系统通过将页面划分为12列的布局结构,开发者可以根据内容的重要性和设计需求灵活控制元素的宽度和排列。 在这篇文章中&#x…

Java--练习--DVD管理系统

一、详细代码 package demo2.Test;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class DVD2 {//DVD管理系统//声明三个数组 用来存储 名称 状态 借出日期 借出次数String[] names new St…

学习使用linux的bash命令可以删除ps aux进程中今天之前指定运行进程的脚本

学习使用linux的bash命令可以删除ps aux进程中今天之前指定运行进程的脚本 脚本注意事项: 脚本 #!/bin/bash# 获取今天的日期(格式 YYYY-MM-DD) TODAY$(date %Y-%m-%d)# 使用 ps aux 查找所有名为 qipa250 的进程 # 并提取出 PID 和启动时间…

游戏引擎哪家强?选哪一个更有钱途

游戏引擎乃是构筑及开发视频游戏的软件架构。其供应一整套工具与库,以处置常见的游戏开发事务,诸如渲染图形、模拟物理、管控音频等等。凭借对游戏引擎的运用,开发人员能够将精力倾注于构建其游戏的独特之处,而非再度发明此类基础…

【游戏模组】极品飞车12无间风云冬季mod,冬天版本的无间风云你体验过吗

各位好,今天小编给大家带来一款新的高清重置魔改MOD,本次高清重置的游戏叫《极品飞车12无间风云》。 《极品飞车12:无间风云》是由Black Box游戏制作室开发的竞速类游戏,于2008年11月18日在北美首发、2008年11月21日在欧洲先后推…

【深入学习Redis丨第八篇】详解Redis数据持久化机制

前言 Redis支持两种数据持久化方式:RDB方式和AOF方式。前者会根据配置的规则定时将内存中的数据持久化到硬盘上,后者则是在每次执行写命令之后将命令记录下来。两种持久化方式可以单独使用,但是通常会将两者结合使用。 一、持久化 1.1、什么…

MySQL【知识改变命运】04

复习: 1:CURD 1.1Create (创建) 语法: insert [into] 表名 [column[,column]] valuse(value_list)[,vaule_list]... value_list:value,[value]...创建一个实例表: 1.1.1单⾏数据全列插⼊ values_l…

Python爬虫之正则表达式于xpath的使用教学及案例

正则表达式 常用的匹配模式 \d # 匹配任意一个数字 \D # 匹配任意一个非数字 \w # 匹配任意一个单词字符(数字、字母、下划线) \W # 匹配任意一个非单词字符 . # 匹配任意一个字符(除了换行符) [a-z] # 匹配任意一个小写字母 […

CSS之一

目录 简介 CSS 语法规范 CSS 代码风格 1.样式格式书写 2.样式大小写 CSS 基础选择器 选择器分类 标签选择器 类选择器 案例之画盒子 多类型使用 id选择器 通配符选择器 font-family设置字体 字体系列 字体大小 字体粗细 文字样式 字体复合属性 示例 CSS 文…

【力扣 | SQL题 | 每日3题】力扣1107,1112, 1077

今天三道mid题都可以用窗口函数轻松秒杀。 1. 力扣1107:每日新用户统计 1.1 题目: Traffic 表: ------------------------ | Column Name | Type | ------------------------ | user_id | int | | activity | enum …