python之路day8 文件操作

文件操作流程

  1,打开文件,产生文件句柄。
  2,对文件句柄进行操作。
  3,关闭文件句柄。

#1. 打开文件,得到文件句柄并赋值给一个变量
f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r

#2. 通过句柄对文件进行操作
data=f.read()

#3. 关闭文件
f.close()
open(file, mode='r', encoding=None)
#file 文件的路径及名称
#mode为文件操作模式(只读,只写,读写),默认为只读
#encoding为文件以什么编码方式打开或写入,中文windows系统默认的是GBK,若要保证不乱码,文件以什么方式存的,就要以什么方式打开
 

打开文件的模式有(默认为文本模式):

r .只读模式(默认模式,文件必须存在,不存在则抛出异常)

w.只写模式(不可读;不存在则创建;存在则清空内容)

a. 只追加写模式(不可读;不存在则创建;存在则只追加内容)

r+.读写模式(先读后写的话是在读完的内容后面写,不读直接写的话是直接覆盖前面的内容)

w+.写读模式

a+.写读模式

对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)

rb    wb   ab

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

文件内容读取的方法

f=open('a.txt','r',encoding='utf-8')

f.read()#全部读取

f.read(n)#读取n个字符,rb模式下按字节读取

f.readline()#按行读取

f.readlines()#按行读取返回一个列表

for line in f:

  print(line.strip())

文件操作的常用方法:

readale   判断当前文件句柄是否可读

writable    判断当前文件句柄是否可写  

seek    调整光标位置  跳到末尾是seek(0,2)
    # f = open('文件操作1',encoding='utf-8')
    # f.seek(6) # 按照字节去移动光标
    # content = f.read()
    # print(content)
    # f.close()

tell  告知当前光标的位置  也是按字节来

truncate 要在writable模式下进行截取。 # r+ a+ ..不能在w模式下使用,对原文件进行截取 # f = open('文件操作1',mode='r+',encoding='utf-8') # print(f.truncate(6)) # f.close()

 with语句

 为了避免打开文件后忘记关闭,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

# 1,主动关闭文件句柄
with open('文件操作2',encoding='utf-8') as f1:
    print(f1.read())
# 2,开启多个文件句柄。
with open('文件操作2',encoding='utf-8') as f1,\
open('文件操作3',encoding='utf-8',mode='w') as f2:
    print(f1.read())
    f2.write('666666')


文件的改的操作

# 1,以读的模式打开原文件,产生一个文件句柄f1.
# 2,以写的模式创建一个新文件,产生一个文件句柄f2.
# 3,读取原文件内容,进行修改,并将修改后的写入新文件。
# 4,将原文件删除。
# 5,将新文件重命名成原文件。

import os
with open('alex的深度剖析', encoding='utf-8') as f1,\
open('alex的深度解析1',encoding='utf-8',mode='w') as f2:
    for line in f1:
        new_line = line.replace('NB','alex')
        f2.write(new_line)
os.remove('alex的深度剖析')
os.rename('alex的深度解析1', 'alex的深度剖析')            

猜你喜欢

转载自www.cnblogs.com/python13/p/9507704.html
今日推荐