当前位置:博客首页 > Python > 正文

第11课 python文件操作讲解

作者: Jarvan 分类: Python 发布时间: 2019-05-16 22:29 百度已收录

一、文件操作函数

打开和创建文件对象函数open

file_object = open(file_name, access_mode=’r’, buffering=-1)

参数说明

  • file_object 变量名,用于标识这个文件对象
  • file_name 你要打开的文件名(字符串),它可以是相对路径也可以是绝对路径
  • access_mode 文件的打开方式,默认是以只读的方式打开
  • buffering 访问文件的缓冲方式。0表示不缓冲,1表示只缓冲1行数据,任何其它大于1的值代表使用给定值作为缓冲区大小。不提供该参数或者给定负值代表使用系统默认缓冲机制,一般情况下采用系统默认的就好
文件打开方式说明

二、文件的读写操作

  1. 读取文件中的数据
    使用read方法一次性读取所有的数据
    使用readline方法每次只读取一行数据
    使用readlines方法将每行读取出来得到一个列表
    使用for循环迭代读取
    使用列表推导式来将文件的每一行都读取到列表中去
  2. 写入数据到文件
    使用write方法写入字符串
    使用writelines一次性从序列中写入多个字符串到文件
  3. 将缓冲区数据写入到文件
    使用flush方法可以将缓冲区中的数据写入到文件中
  4. 关闭文件
    文件打开之后一定要记得关闭,否则会造成资源泄漏
    使用close方法关闭文件
# 常规的文件读取代码
f = open(r'测试文件.txt',encoding='utf-8')
# txt = f.read()
for line in f:
    print(line.strip())#去除空白字符
f.close()

#方法二,简洁写法,去除空白字符
f = open(r'测试文件.txt',encoding='utf-8')
lines = [line.strip() for line in f]
print(lines)
f.close()
# 常规文件写入,注意换行
f = open('02test.txt', mode='w', encoding='utf-8')
lines = ['sdfsdf\n','sdfdsaf\n','2341234\n', '学习一波\n']
f.writelines(lines)
f.close()

采用r+写入文件的时候,会从头替换原来的内容

采用w+会先清空原来的内容

read()方法能够刷新缓冲区,将之前write的内容写入文件,truncate()方法可以截取前N个字符

f = open('02test.txt',mode='w+',encoding='utf-8')
f.write('冯唐易老,李广难封\n明日复明日,明日何其多\n我生待明日,万事成蹉跎')
print(f.tell()) # 查找光标所在位置
print(f.seek(0)) #移动光标到指定位置
print(f.read()) #读取文件
f.truncate(12) # truncate截取前12个字符(utf-8编码1个汉字=3个字节,gbk编码1个汉字=2个字节)
# 文件备份代码
f1 = open('02test.txt',encoding='utf-8')
f2 = open('02test.txt.bak',mode='w',encoding='utf-8')
f2.write(f1.read())
f1.close()
f2.close()
# 复制图片
f1 = open('p1.jpg',mode='rb')
f2 = open('p2.jpg',mode='wb')
f2.write(f1.read())
f1.close()
f2.close()

三、文件对象的内建方法

文件对象内建方法

四、使用上下文管理器操作文件

python的上下文管理器会自动的清理一些资源,比如打开的文件和关闭文件,当执行完成上下文管理器的代码之后,文件会被自动的关闭。

语法:

with open(filename, mode) as variable:
# 对文件进行各种操作

例子:

# 打开一个文件然后读取文件中的内容加工之后写入到列表
text = []
with open('02test.txt',encoding='utf-8') as f:
    for line in f:
        text.append(line.strip())
print(text)

作业

1. 熟练应用文件的读写操作,了解各种读取和写入文件的方法
2. 学会应对不同文件编码的问题处理(中文乱码问题)
3. 学会使用上下文管理器操作文件
4. 学会使用迭代的方式读取文件

发表评论