ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 文件操作模式

2022-06-02 18:01:15  阅读:128  来源: 互联网

标签:文件 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)

1 2 3 4 5 6 7 8 9 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格式编码为二进制

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,光标
来源: https://www.cnblogs.com/litianming/p/16338659.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有