Python学习-----文件操作(读写定位篇)

2023-11-11

目录

前言:

1.打开文件 (open)

关闭文件(close)

2.文件的读取(文件变量名 f)

(1)整体读取(read)

(2)读取一行(readline)

(3)读取多行(readlines)

3.文件的写入(文件变量名f)(write)

 4.判断文件的可读性、可写性、是否关闭完全(文件变量名f)

(1)判断文件的可读性(readable)

(2)判断文件的可写性(writeable)

(3) 判断文件是否关闭完全(closed)

 5.文件的定位(文件变量名为f)

(1)自定义读写位置(seek)

 (2)获取当前位置(tell)

 6.with open 打开文件方法


前言:

        前面我们学过C语言操作文件,文件有很多种,.txt、.mp3、.doc、.jpg等等……,一般我们是从文本文件txt开始去学习了,这里我们就以文本文件为学习对象,详细讲解Python中文件操作方式。

这个是c语言文本文件操作方法C语言 文本文件读取、写入与定位(详细介绍)_c语言文件的读取和写入_Python欧尼酱的博客-CSDN博客

1.打开文件 (open)

格式:

f = open(文件路径,操作符,encoding=编码)

说明:

文件路径:包括相对路径和绝对路径,如果不写的话,系统会默认当前文件夹的目录

操作符:包括 r(读取read),w(写入write)、a(追加append)、wb(以二进制流写入)、rb(以二进制流读取)……

encoding:这个是设置字符编码,一般用utf8,这个是世界万能编码(几乎集合了世界所以文字字符)。另外介绍 GBK(中文编码)、ASCII(阿斯克码)

f=open(r"./user.txt",'w',encoding='utf8')
f.close() #关闭文件
#说明:
#如果这个文本文件是不存在的,系统会创建一个新的文本文件,如果存在的话,w操作符写入的数据会把原来的内#容覆盖
#r 是表示原始字符串
#./ 是表示当前目录,../ 是表示上一级目录

关闭文件(close)

f.close()

说明:当我们操作完了文件之后一定要记得关闭文件,免得出现内存泄露

2.文件的读取(文件变量名 f)

r

(1)整体读取(read)

格式:

f.read(num)

说明:这个函数是以整个文本为读取对象的,num是表示读取数量,如果num不写的话,那么就读取全部文本,如果num写了,就读取num个字符,最后是返回一个字符串的,当num大于文本里面字符的个数也不会报错

 这个是当前文本文件的内容:

f=open(r"./user.txt",'r',encoding='utf8') 
s=f.read() 
print(s)  #读取完成了之后,文件读取指针就在末尾,下面索性就关闭再重新打开
#输出结果:HelloWord,my friend
f.close()  #关闭文件

f1=open(r"./user.txt",'r',encoding='utf8') #当要再次读取就的再次打开,出现获取变量
s1=f1.read(2) #表示读取两个字符
print(s1)
#输出结果:He
f1.close()

(2)读取一行(readline)

 f.readline(num)

说明:这个函数是只读取一行,num的用法跟上面是一样的

文本内容:

f=open(r"./user.txt",'r',encoding='utf8')
read=f.readline() #读取第一行全部
print(read)
#输出结果:HelloWord,my friend
read1=f.readline() #此时文件读取指针到了第二行,所以就从第二行开始
print(read1)
#输出结果:nice to meet you

(3)读取多行(readlines)

f.readlines(num) 

说明:这个是吧文本内容全部按行读取,每行为一个字符串,结果返回这些字符串组成的列表,num用法同上。

f=open(r"./user.txt",'r',encoding='utf8')
r=f.readlines(2) #读取全部数据,然后返回一个列表,其中的换行符\n也会读取进去
print(r) #输出这个列表
for i in r:  #用循环依次输出
    print(i,end='')
f.close()
#输出结果:
# ['HelloWord,my friend\n', 'nice to meet you\n', '156666\n', 'good night!!']
# HelloWord,my friend
# nice to meet you
# 156666
# good night!!

3.文件的写入(文件变量名f)(write)

f.write(内容) 

注意:写入了之后就必须关闭文件!!! 

f=open(r"./user.txt",'w',encoding='utf8')
f.write('''my love\n
kun\n
wawd
''')
f.close()

查看写入的文件: 

 4.判断文件的可读性、可写性、是否关闭完全(文件变量名f)

(1)判断文件的可读性(readable)

f.readable()

说明:这个函数的返回值是一个布尔变量,如果文件具备可读性就返回True,反之返回False

f=open(r"./user.txt",'w',encoding='utf8')
print(f.readable())
f.close()
#输出结果:False

f=open(r"./user.txt",'r',encoding='utf8')
print(f.readable())
f.close()
#输出结果:True

(2)判断文件的可写性(writeable)

f.readable()

说明:这个函数的返回值是一个布尔变量,如果文件具备可写性就返回True,反之返回False

f=open(r"./user.txt",'w',encoding='utf8')
print(f.writable())
f.close()
#输出结果:True

f=open(r"./user.txt",'r',encoding='utf8')
print(f.writable())
f.close()
#输出结果:False

(3) 判断文件是否关闭完全(closed)

f.closed

说明:这个函数的返回值是一个布尔变量,如果文件完全关闭就返回True,反之返回False

f=open(r"./user.txt",'w',encoding='utf8')
w=f.write('hello')
f.close()
print(f.closed)
#输出结果:True

 

 5.文件的定位(文件变量名为f)

(1)自定义读写位置(seek)

f.seek(size,position)

说明:参数size是表示文件指针移动的字节数(正数表示右移,负数表示左移),position 是表示开始定位的初始位置,0表示从头开始,1表示从此时的位置开始,2表示从末尾开始,如果没有去设置的话,系统会默认从此时的位置开始。

补充说明:在utf8编码中,中文的字节数是3,而在GBK编码中,中文是占2个字节。英文不管在什么编码下都是占1个字节(所以要注意看编码格式,如果用utf8编码读取中文只读取/偏移3个字节就会报错的!)

 示例1:

f=open(r"./user.txt",'r',encoding='utf8')
f.seek(3,0)
print(f.read())
#输出结果:达西瓦:Python欧尼酱
#          thank you

 示例2:

f=open(r"./user.txt",'r',encoding='utf8')
f.seek(-9,2)
print(f.read())
#结果报错:io.UnsupportedOperation: can't do nonzero end-relative seeks

 原因分析:在Python3中,seek文件指针初始位置是只能从开头开始,而不可以从末尾开始,而Python2是允许的。

解决方法:以二进制流去读取每一个字节码,所以把操作符由 r 改为 rb ,同时encoding去掉,改为 f=open(r"./user.txt",'rb')

 效果:

f=open(r"./user.txt",'rb')
f.seek(-9,2)
print(f.read())
#输出结果:b'thank you'

 (2)获取当前位置(tell)

f.tell()

说明:这个函数的返回值是当前文件指针的位置,返回的是从头开始到此时文件指针的位置所经历过的总字节数(偏移字节数)

文本内容: 

f=open(r"./user.txt",'r+',encoding='utf8')
a=f.read()
print(a)
print(f.tell()) #测量文件指针偏移了多少个字节
#输出结果:39

 6.with open 打开文件方法

格式:

with open(文件名/文件路径,操作文件,字符编码[encoding='utf-8']) as 别名:

        内容

        ……

 说明:这种写法是不需要关闭文件的,系统会默认关闭文件,写法是采样缩进原则

示例:

with open(r"./user.txt",'w',encoding='utf8') as f:
    f.write('流浪地球2')
print(f.closed)  #判断文件是否关闭
#输出结果:True

 

OK,这一期就到这里了,thanks~~~ 

分享一张壁纸 

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

Python学习-----文件操作(读写定位篇) 的相关文章

随机推荐

  • pandas 根据某一列的值修改某一列的值

    在做数据分析时 需要根据某一列的值修改另外一列的值 此时就需要使用pd loc 函数 例子 import pandas as pd x2 pd read csv submit csv x2 假如 我要修改id 800000的isDefaul
  • 光条中心提取方法总结(二)

    传统算法见之前的文章 光条中心提取方法总结 一 视觉菜鸟Leonardo的博客 CSDN博客e 二 深度学习方法 利用深度学习来进行光条中心提取是这几年刚兴起的方法 目前可供参考的论文屈指可数 方法从两个途径切入 1 利用深度学习进行光条图
  • 研一Python基础课程第二周课后习题分享(含代码)

    一 问题描述 共计18道 1 问题1 你买了n个苹果 但是很不幸里面混进了一条虫子 如果虫子每x小时吃完一只苹果 然后开始吃下一个 经过y小时后 你还有几个完整的苹果 分别输入n x y三个整型数值 输出结果 2 问题2 分别输入两个时间
  • javascript 实现Base64加密

    想必大家对base64并不陌生吧 在本文将为大家介绍下Js中的base64加密解密过程 感兴趣的朋友不要错过 html view plain copy
  • 关于存储那些事1-----基础篇

    目录 一 SSD 1 简介 1 1 分类 1 1 1 易失性存储器 1 1 2 非易失性存储器 2 SSD接口 2 1 SATA接口 2 2 SATA Express接口 2 3 SAS接口 2 4 U 2接口 2 5 mSATA接口 2
  • 【解决方案】LaTeX插入svg图片

    LaTeX插入svg图片的解决方案 今天在写论文时 想在论文里插入svg图片 遇到了问题 百度了一下方法 发现LaTeX不支持插入svg图片 在捣鼓了一下之后 发现基本的方法不是失效就是比较麻烦 本文简单总结了两个解决方案 发现都不太行 研
  • 系统及服务器巡检流程图,巡检日常工作流程图

    巡检日常工作流程图 由会员分享 可在线阅读 更多相关 巡检日常工作流程图 1页珍藏版 请在人人文库网上搜索 1 质质检检日日常常巡巡检检流流程程图图 查查看看生生产产交交接接半半成成品品或或成成品品 初初步步确确定定生生产产零零件件 准准备
  • Win10下安装mujuco

    1 背景 安装mujuco之前玩的环境都是些简单的 易处理的环境 就是下面这种 第一张图是移动下面的方块保持杆子立起来环境 第二张图是小车爬山环境 第三张图是给杆子施加力使得杆子保持立起来环境 从图也可以看出 是比较简单的环境 而mujuc
  • 批量文本文件内容替换之Linux sed命令

    文章目录 sed命令简介 需求 sed实现批量替换 sed命令简介 Linux sed命令可以使用shell脚本进行文件的批量处理 如批量替换 修改等等 尤其是在需要对大量文本文件进行批量操作时 使用sed命令会起到事半功倍的效果 关于详细
  • 其他-08-idea配置查询字节码

    1 字节码查询 查看一下idea是否安装了 一般都安装了 编译一下 生成target 点击View下面的Show ByteCode即可 其实你看到的字节码是java加工多的 可以看下这个类 原生都是数字 以 helloWql方法字节码解释
  • 为何程序员完成最后20%的工作需要的时间跟之前的80%一样多?

    听过行百里者半九十吧 这句话在程序员的工作中同样适用 到底是为何呢 Matija用一个精巧的比喻揭示了个中道理 其实这就好比在高峰期从郊外开车回市中心 前 80 的路程很顺 高速嘛 可能两小时就走完了 但是到了城里 就走不动了 红绿灯 人行
  • MATLAB点云处理函数整理

    pcbin 空间bin点云点 bins pcbin ptCloud numBins bins pcbin ptCloud numBins spatialLimits bins binLocations pcbin pcdenoise 去噪
  • 数据结构与算法之二叉树的建立

    文章目录 一 已知二叉树的先序和中序数列 创建二叉树 1 算法思想 2 代码实现 二 已知二叉树的先序和后序数列 创建二叉树 1 算法思想 2 代码实现 三 二叉树的顺序存放 打印先 中 后序遍历 一 已知二叉树的先序和中序数列 创建二叉树
  • Java图形化界面编程一

    目录 一 介绍 二 AWT编程 2 1AWT介绍 2 2 AWT继承体系 2 3 Container容器 2 3 1 Container继承体系 2 3 2 常见API 2 3 3 容器演示 2 4 LayoutManager布局管理器 2
  • Keras使用VGG16模型预测自己的图片

    Keras使用VGG16模型预测自己的图片 环境 Win10 Miniconda3 Pycharm2018 02 代码如下 from keras applications vgg16 import VGG16 from keras prep
  • 计算机视觉课程设计:基于Mediapipe的体感游戏设计

    演示视频 计算机视觉课程设计 基于Mediapipe的体感游戏设计 哔哩哔哩 bilibili
  • SpringCloud微服务架构标准版本拓扑图

    本图是公司需要 自己整理的SpringCloud微服务架构标准版本拓扑图 有 eddx格式 需要请私信 为了方便截了个jpg 希望对你有所帮助 喜欢的朋友点赞收藏转发
  • Cow Marathon(树的直径)(最长路)

    Cow Marathon Time Limit 2000MS Memory Limit 30000KB 64bit IO Format lld llu Submit Status Description After hearing abou
  • 【树莓派】利用tesseract进行汉字识别

    树莓派 利用tesseract进行汉字识别 安装tesseract库 识别图像中的汉字 安装tesseract库 安装tesseract库和它的python封装 sudo apt install tesseract ocr fix miss
  • Python学习-----文件操作(读写定位篇)

    目录 前言 1 打开文件 open 关闭文件 close 2 文件的读取 文件变量名 f 1 整体读取 read 2 读取一行 readline 3 读取多行 readlines 3 文件的写入 文件变量名f write 4 判断文件的可读