首页 > 编程语言 >python文件操作:r、w、a、r+、w+、a+和b模式

python文件操作:r、w、a、r+、w+、a+和b模式

时间:2023-04-04 16:12:32浏览次数:37  
标签:文件 utf encoding python 模式 打开 open 光标

对文件操作的基本步骤

f=open('a.txt','r',encoding='utf-8')
data=f.read()
print(data)
f.close()

文件的打开和关闭使用open()、close()函数,文件刚打开时光标在最前面。

open()函数的第一个参数为要打开的文件名,默认路径为这个脚本所在路径;第二个参数为打开模式,第三个参数为编码格式。

文件的基本打开模式有r、w、a、r+、w+、a+,如果省略打开模式默认为r只读,各打开模式的区别如下:
在这里插入图片描述

f.readable()  判断文件是否可读,返回True或False

f.readline()  每次读取一行,当读取到一行的末尾时再执行readline读取内容为空

f.readlines()  将文件所有内容读出放到一个列表,每行为一个元素,类型为字符串,例如['hello\n', 'hi\n', 'nice\n']

如果在文件打开时,指定newline=‘’,则换行的结果显示为/r/n(windows平台的换行符为\r\n,unix和linux平台的换行符为\n)

f1=open('b.txt','r',encoding='utf-8')
f2=open('b.txt','r',encoding='utf-8',newline='')
print(f1.readlines())
print(f2.readlines())
f1.close()
f2.close()
#执行结果为
['123\n', 'abc']
['123\r\n', 'abc']

f.writable() 判断文件是否可写,返回True或False

f.write() 将所有内容作为一个整体写入文件

f.writelines() 将列表内容按行写入文件,f.writelines(['hello\n', 'hi\n', 'nice\n'])

f.closed 判断文件是否关闭,返回True或False,注意该方法没有括号

f.encoding 返回文件打开时候的编码,注意该方法没有括号

f.flush() 将内容中的内容刷到硬盘

直接使用open函数打开文件时,还需要手动关闭close文件,否则文件会一直占据内存。使用with open() as f打开文件则无需手动关闭,使用例子如下。

def file_operation():
    with open('a.txt','a+',encoding='utf-8') as f:
      f.write('hello')
    print(f.read())

文件默认是以t即文本模式进行处理,

b为二进制模式,可以处理除了文本之外的图片、音频、视频等格式的文件,还可以跨平台处理

f=open('test11.py','rb')------以b的方式打开文件时不能指定编码

data=f.read()

print(data.decode('utf-8'))------读取之后以utf-8格式对二进制进行解码

 

f=open('test22.py','wb')

f.write(bytes('1111\n',encoding='utf-8'))--------bytes函数将指定内容以uft-8格式编码为二进制
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:725638078
f.write('22222\n'.encode('utf-8'))----------encode直接将指定内容以uft-8格式编码为二进制

文件内光标的移动

除去read( )是以字符进行读取的,其他光标的移动都是以字节为单位进行的,如seek、tell、truncate

read(3)表示读取3个字符

seek(3)表示光标向后移动3个字节,默认是从光标在文件最前面开始,也即seek(3,0)

光标的相对移动需要在打开时指定b模式,seek的第二个参数表示移动方式,0为默认方式,即从文件最开头移动,1是相对上一次移动,2是从文件末尾移动

seek(3,1) 表示从光标上一次所在的位置向后移动3个字节

seek(-3,2)表示从文件末尾开始向前移动

truncate(3)表示截取文件前3个字节,必须以可写的方式打开,w和w+除外

tell( )表示显示当前光标所在的字节

标签:文件,utf,encoding,python,模式,打开,open,光标
From: https://www.cnblogs.com/xxpythonxx/p/17286765.html

相关文章

  • CISP-PTE靶场通关思路分享-文件包含篇(十分友好,无比详细)
    PTE靶场包含5道Web题之文件包含靶场,此靶场为模拟靶场文件包含从首页中我们知道了需要读取根目录下的key.php文件,尝试获取WebShell   不获取Shell,直接读取key.php文件内容:使用伪协议php://filter可以达到的目的;使用data伪协议使用伪协议data://可以达到注入木......
  • Python3内置函数之P系列
    1、pow()pow()函数是Python内置函数之一,用于计算一个数的幂。它接受两个参数,第一个参数为底数,第二个参数为指数,如果提供第三个参数,则表示对结果取模。 2、print()print()函数是Python内置函数之一,用于输出指定的对象。它可以接受多个参数,用逗号分隔,它们将被依次输出,并且......
  • Python3内置函数之O系列
    1、object()object()是Python的内置函数之一,它返回一个新的object对象。这个对象没有任何特殊的属性或方法,它是所有类的基类,即所有Python类都直接或间接地继承自object类。如果您在Python中定义一个新的类,并且没有明确指定继承哪个类,那么该类将自动成为object类的子类。......
  • 利用bat文件在命令行进行代理切换
    命令行里,用python也好,用scoop也好,用git也好,总是需要用代理搞一下。看到有篇博客写了一个简单的函数,用来做命令行的开关,于是我也仿着人家写了一个bat,用来做cmd的代理开关。其中遇到了一些小坑,稍微趟了一下,哎,可能powershell就没这么多破事了吧。批处理的语法实在是太原始了,脑壳......
  • Python Opencv等比例缩放图片
    PythonOpencv等比例缩放图片前言前提条件相关介绍实验环境等比例缩放图片代码实现输出结果前言本文是个人使用PythonOpencv处理图片的笔记,由于水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入我的个人主页查看前提条件熟悉Python相关介绍Python是一种跨平台的计算机......
  • python去掉重复值的方法--四种
    my_list=[1,1,1,1,2,3,3,3,4,5,5,56,6,7,77,7,5,5,3]#集合法:缺点是结果会打乱原始数据的顺序print(set(my_list))#列表法:缺点是代码较长res_list=[]#用来存放结果foriinrange(len(my_list)):ifmy_list[i]notinres_list:res_list.append(my_list[i])print(res_list......
  • 《Python编程快速上手—让繁琐工作自动化》实践项目答案:第六章
    实践项目表格打印编写一个名为printTabel()的函数,它接受字符串的列表的列表,将它显示在组织良好的表格中,每列右对齐,假定所有内层列表都包含同样数目的字符串,例如:你的printTable()函数将打印出:点击查看代码tableData=[['apples','oranges','cherries','banana'],......
  • 在IDEA创建SpringBoot项目没有src等文件夹
    问题在IDEA创建SpringBoot项目的时候,有时候创建完成了,但是没有src等文件夹,可能前几分钟还行,突然就不行了。原因可能是网络等问题,我也还没弄懂,或者哪位大神知道的,可以留言告知一下。解决办法办法一:自己手动创建办法二:通过网页创建,下载压缩包,再通过IDEA打开即可阿里云:https:/......
  • Revit附加模块Add-in Manager里一次性加载所有.dll文件
    publicResultExecute(ExternalCommandDatacommandData,refstringmessage,ElementSetelements){GlobalRevitData.commandData=commandData;AppDomain.CurrentDomain.AssemblyResolve+=CurrentDomain_AssemblyResolve;//在Execute方法体内添加这行......
  • java使用浏览器请求下载pdf文件
    java使用浏览器请求下载pdf文件代码/***下载pdf文件**@parampdfFileUrl文件地址*@paramfileName文件名称*/publicstaticvoiddownloadPdf(StringpdfFileUrl,StringfileName){ServletRequestAttributesrequestAttributes=(ServletRequestAttr......