Python文件操做

文件读取常见方式

方式一:编码

f = open('d:\word.txt',mode='r',encoding='utf-8')
msg = f.read()
f.close()
print(msg)

read()将文件中的内容所有读取出来;弊端:若是文件很大就会很是的占用内存,容易致使内存奔溃.spa

解决:在r模式下,n按照字符读取code

f = open('d:\word.txt',mode='r',encoding='utf-8')
msg = f.read(3)
msg1 = f.read()
f.close()
print(msg)
print(msg1)

方式二:视频

f = open('word.txt',mode='r',encoding='utf-8')
msg1 = f.readline().strip()
msg2 = f.readline().strip()
msg3 = f.readline().strip()
msg4 = f.readline().strip()
f.close()
print(msg1)
print(msg2)
print(msg3)
print(msg4)

readline()读取每次只读取一行,注意点:readline()读取出来的数据在后面都有一个\n,解决这个问题只须要在咱们读取出来的文件后边加一个strip()就OK。blog

方式三;图片

f = open('word.txt',mode='r',encoding='utf-8')
print(f.readlines())
f.close()

 readlines() 返回一个列表,列表里面每一个元素是原文件的每一行,若是文件很大,占内存,容易崩盘。ip

方式四:内存

能够经过for循环去读取,文件句柄是一个迭代器,他的特色就是每次循环只在内存中占一行的数据,很是节省内存。utf-8

f = open('../path1/弟子规',mode='r',encoding='utf-8')
for line in f:
    print(line)   #这种方式就是在一行一行的进行读取,它就执行了下边的功能
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
f.close()

文件操做方式:it

#1. 打开文件的模式有(默认为文本模式):
r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则建立;存在则清空内容】
a, 只追加写模式【不可读;不存在则建立;存在则只追加内容】

#2. 对于非文本文件,咱们只能使用b模式,"b"表示以字节的方式操做(而全部文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
rb 
wb
ab
注:以b方式打开时,读取到的内容是字节类型,写入时也须要提供字节类型,不能指定编码

#3,‘+’模式(就是增长了一个功能)
r+, 读写【可读,可写】
w+,写读【可写,可读】
a+, 写读【可写,可读】

#4,以bytes类型操做的读写,写读,写读模式
r+b, 读写【可读,可写】
w+b,写读【可写,可读】
a+b, 写读【可写,可读】

seek()

seek(n)光标移动到n位置,注意: 移动单位是byte,全部若是是utf-8的中文部分要是3的倍数

一般咱们使用seek都是移动到开头或者结尾

移动到开头:seek(0)

移动到结尾:seek(0,2) seek的第二个参数表示的是从哪一个位置进行偏移,默认是0,表示开头,1表示当前位置,2表示结尾

 

tell()

使用tell()能够帮咱们获取当前光标在什么位置

with方式打开文件

# 利用with上下文管理这种方式,它会自动关闭文件句柄。
with open('t1',encoding='utf-8') as f1:
    f1.read()
    
# 一个with 语句能够操做多个文件,产生多个文件句柄。
with open('t1',encoding='utf-8') as f1,\
        open('Test', encoding='utf-8', mode = 'w') as f2:
    f1.read()
    f2.write('老男孩老男孩')
相关文章
相关标签/搜索