访问文件操作过程
1 打开文件
2 读取文件
3 将信息储存到内存
4 写入文件
5 关闭文件
6 保存文件并释放内存空间
python中如何实现对文件的操作
help(open)
# 查看open的帮助文档
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
我们可以看到帮助文档最上面这一部分,open有以下参数:
参数名 | 需要填入的内容 |
---|---|
file | 要打开的文件名(str) |
mode | 打开文件的方式,有text和bytes两种 |
buffering | 缓存方式 |
encoding | 文件的编码方式 |
errors | 当编码发生错误的时候的处理方式 |
newline | 设置后禁用通用换行符 |
来尝试使用 open 打开文档:
# 在当前文件创建一个txt文本,并打开它
fp = open('像我这样的人.txt', encoding='utf-8')
# 这里因为打开的时候说编码有问题 于是我设置了编码的格式 - utf-8
print(fp.readlines())
print(fp)
fp.close()
以下是我们的输出内容
文本在代码最后要记得关闭(close()),文件打开后保存在电脑的内存中,如果程序异常退出,会造成系统资源浪费。
打开文件-文件编码
• encoding: 文件的编码方式( str )
• encoding的默认值:None, 不同的平台打开的方式不一样
为什么需要编码
对于计算机来说,所有信息都是由0和1组成的二进制。
人类无法 仅用二进制就来完成计算机的各种操作 字符编码解决人与计算机之间的沟通问题。
编码格式 | 特点 |
---|---|
ASCII | 除去最高位,用7位表示 |
扩展ASCII | 用8位表示 |
GB2312 | 表示中文汉字 |
GBK | 扩展表示更多的中文字符 |
UTF-8 | 可变长的方式,节省磁盘空间 |
我们要如何才能判断文件的编码格式呢?
—— 使用模块:charde
pip install charde
pip失败解决方案
charde 判断编码格式的使用:
import chardet
fp = open('像我这样的人.txt', 'rb')
print(chardet.detect(fp.read()))
# 输出结果:{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
fp.close()
- 可以看到编码格式(encoding)是utf-8
file1 = 'utf8.txt'
file2 = 'gpk.txt'
with open(file1, "r", encoding = 'utf-8') as fp1 ,\
open(file2, "r", encoding = 'gpk') as fp2:
for line in f1:
print(line)
for line in f2:
print(line)
# 输出文件里面的内容
这里使用 with 语句对文本文件进行操作的时候,结尾的时候不必使用fp.close(),因为 with 语句是 python 中的上下文管理器,在 with 语段结束后自带关闭文件的操作。
方式 | 说明 |
---|---|
f.tell() | 文件光标 |
f.seek(cookie,whence=0) | 移动光标位置,cookie =>偏移量,whence=>(0 => 开始,1=>当前,2=>末尾) |
f.readlines() | 以行方式读取文件当前到末尾,返回一个列表,列表中一个元素对应文件中的一行内容 |
f.read() | 返回当前到末尾(字符串)可指定字符数 |
f.readline() | 返回当前位置到当前所处行的行末 |
f.write(‘something’) | 将内容写入文件 |
文件对象的其他方法
方式 | 说明 |
---|---|
f.readable() | 文件是否可读 |
f.fileno() | 返回文件描述符 |
f.seekable() | 指针是否可移动 |
f.truncate(n) | 从文件头开始截取指定的参数n个字节,其他的全部删除 |
f.writable | 文件是否可写 |
至于上面的方式就不一 一展示了,在需要的时候找到对应的文件操作方法进行使用就行。
如果想学习更多,欢迎到访 三创.