博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习-文件操作
阅读量:5050 次
发布时间:2019-06-12

本文共 2583 字,大约阅读时间需要 8 分钟。

使用open函数创建文件对象, 然后就可以使用文件对象(file)常用的函数.

例: f = open('/path/to/targetfile/test.txt', mode='r', encoding='utf-8')

open函数参数说明:

  第一个位置: 文件名称

  第二个位置: mode 值, 决定了打开文件的模式: 只读(r), 只写(w), 追加(a)等. 默认为只读

  第三个位置: encoding 值, 读取的文件是用什么编码格式, 此处就用什么编码格式, 与读取文件一致即可

文件对象常用的函数

序号 函数 描述
1 file.read([size]) 从文件读取指定的字符数, 如果未指定size, 则读取文件中的所有内容
2 file.write(str) 将字符串写入文件, 返回的是写入的字符串的长度
3 file.close() 关闭文件对象
4 file.flush() 刷新文件内部缓冲, 直接把内部缓冲区的数据立刻写入文件
5 file.readline() 读取文件的一行, 包括换行符'\n'
6 file.readlines() 一次性读取文件的所有行, 返回一个列表, 列表中的单个元素是文件的单行的内容
7 file.seek(offset[,where]) 移动文件读取指针的位置<br />参数: <br />offset - 偏移量(单位: 字节)<br />where - 可选(3个值: 0 从文件开头偏移 1 从当前位置偏移 2 从文件末尾偏移)
8 file.truncate([size]) 截断<br />参数: size 指定时, 从文件开头阶段size个字节<br />size 未指定, 从当前位置截断至文件末尾, 当前位置值末尾内容被删除

 不同模式打开文件的完全列表

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

在存储图片, 视频时指定二进制模式, 在做爬取存储图片时, 经常使用'wb'模式.

 

代码实例:

# 有testfile.txt, 内容为我爱你中国心爱的母亲我为你流泪也为你自豪

1. 读取文件

# 读取所有内容, 然后输出 f = open('testfile.txt', mode='r', encoding='utf-8')content = f.read()print(content)f.close()
# 一次读取所有行的内容, 遍历输出f = open('testfile.txt', mode='r', encoding='utf-8')file_lines = f.readlines()for line in file_lines:    print(line, end='')f.close()
# 读取指定字符数f = open('testfile.txt', mode='r', encoding='utf-8')s = f.read(3)  # 注意此处是指字符数, 不是字节数, 如果代表字节数, utf-8编码一个中文占3个字节, 那么输出结果就应该为 '我'print(s)f.close()# 输出结果我爱你

 

2. 写入文件

# 清空原有内容写入f = open('testfile.txt', mode='w', encoding='utf-8')f.write('真的很自豪')f.flush()f.close()# 追加写入f = open('testfile.txt', mode='a', encoding='utf-8')f.write('真的真的很自豪\n')f.close()

 

3. 操作文件的指针

# 操控文件读取指针位置f = open('testfile.txt', 'r')f.seek(3)   # 读取指针右移3个字节print(f.read(2))  # 读取2个字符f.seek(6)print(f.read(1))f.seek(3, 0)  # 读取指针从文件开头右移3个字节print(f.read(1))print(f.tell())  # 返回文件指针的当前位置# f.seek(3,1)print(f.readline())# print(f.read())f.close()# 输出结果爱你你爱6你中国

 

转载于:https://www.cnblogs.com/gandoufu/p/9295608.html

你可能感兴趣的文章
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
【安卓5】高级控件——拖动条SeekBar
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android入门之文件系统操作(二)文件操作相关指令
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
Swift 中的指针使用
查看>>
Swift - 使用闭包筛选过滤数据元素
查看>>
alue of type java.lang.String cannot be converted to JSONObject
查看>>
搜索引擎选择: Elasticsearch与Solr
查看>>
JAVA设计模式之简单工厂模式与工厂方法模式
查看>>
③面向对象程序设计——封装
查看>>
【19】AngularJS 应用
查看>>
Spring
查看>>
Linux 系统的/var目录
查看>>
Redis学习---Redis操作之其他操作
查看>>
WebService中的DataSet序列化使用
查看>>
BZOJ 1200 木梳
查看>>
【Linux】【C语言】菜鸟学习日志(一) 一步一步学习在Linxu下测试程序的运行时间...
查看>>
hostname
查看>>