python学习笔记(八)——文件操作
在 windows 系统下,我们通过 路径+文件名+扩展名的方式唯一标识一个文件,而在 Linux 系统下通过 路径+文件名唯一标识一个文件。
文件分类:文件主要可以分为文本文件和二进制文件,常见的如记事本中的 xx.txt 的文件就是文本文件,而图片,音乐等就是以二进制方式保存的二进制文件。
python 文件操作:
def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
- file :文件标识,通过 路径+文件名(扩展名)的方式指定
- mode : 模式,读、写、追加、新建等。
- encoding : 编码方式。
下面是 builtins.py 中对 open 的说明:
Open file and return a stream. Raise OSError upon failure.
打开文件并返回流。 失败时引发OSError。
...
可用的模式有:
'r' open for reading (default) # 只读
'w' open for writing, truncating the file first # 写入
'x' create a new file and open it for writing # 创建一个新文件,并写入
'a' open for writing, appending to the end of the file if it exists # 追加
'b' binary mode # 二进制模式
't' text mode (default) # 文本模式
'+' open a disk file for updating (reading and writing) # 打开磁盘文件进行更新(读写)
'U' universal newline mode (deprecated) # 通用换行模式
读取文件测试
在磁盘上准备一个待测试文本文件。
使用 open 方法读取文件。
f=open(r"F:\python test.txt","r",)
print(f.read())
pycharm报错:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x80 in position 80: illegal multibyte sequence
看来open()默认的读取编码格式是“gbk”,报错信息中显示有无法解读的字节序列,那么我们把读取的编码格式指定为 “UTF-8” 就可以了。
f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.read())
输出:
If you put your mind to it, you can accomplish anything.
有志者,事竟成。
需要注意的是,用 f.read() 会将文本中的内容全部读取进内存中,如果文件内容很多将会占用大量的内存。python 中为文件对象 file 还提供了以下的几种读取方法。
- file.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。
- file.readline():返回一行。
- file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。
f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.read(6))
输出:
If you
f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.readline())
输出:
If you put your mind to it, you can accomplish anything.
f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.readlines())
输出:
['If you put your mind to it, you can accomplish anything.\n', '有志者,事竟成。']
需要注意的是,文件在读取时读取的位置会被文件指针保存,方便下一次继续读取。可以通过 f.seek(偏移量,[起始位置])
用来移动文件指针。
关闭文件:f.close()
在一个文件使用完之后一定要记得关闭文件。每个文件都会占用一个文件句柄(LInux下为文件描述符),如果不进行资源的释放会造成极大的浪费。另外文件打开后如果对文件进行了修改不会马上写回到文件中,如果没有手动关闭文件很可能修改过的数据就不会同步到文件中。
写入文件测试
覆盖写入。
f=open(r"F:\python test.txt","w",encoding='UTF-8')
f.write("写入测试")
f.close()
f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.read())
f.close()
输出:
写入测试
注意:在“w”模式下,如果文件不存在则会创建一个新文件,再进行写入操作。
追加写入。
f=open(r"F:\python test.txt","a",encoding='UTF-8')
f.write("追加测试")
f.close()
f=open(r"F:\python test.txt","r",encoding='UTF-8')
print(f.read())
f.close()
输出:
写入测试追加测试
同 “w” 模式一样,如果文件不存在,会创建一个新的文件。
读写文件测试
f=open(r"F:\python test.txt","w+",encoding='UTF-8')
f.write("读写测试")
f.seek(0)
print(f.read())
f.close()
输出:
读写测试
同理,也可以使用 “a+” 追加读写的方式。
自动关闭文件
在某些程序中会对大量的文件进行打开和关闭的操作,我们手动的去关闭会很麻烦。因此,python 中提供了一种自动关闭文件的方法。
with open(r"F:\file","r") as f:
f.readline()
在 with 后加上文件操作,在执行完相应的语句后会自动将文件关闭。
相关文章
- Python批量安装.Txt文件中的类库包
- python logging模块写入中文,文件乱码的解决方法
- 打包python文件,让文件程序化
- locust安装及其简单使用----基于python的性能测试工具
- Why Python?
- 这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作
- Python之生成项目依赖包文件requirements.txt
- [Python]根据地址从maps文件中找相应的库名
- Python编程:关闭Django模板的自动转义
- Python open操作文件
- Python_07-常用函数
- 系统编码,文件编码,python编码
- mac上 自己安装的python 和 自带python 的可执行文件位置
- 在mac上 使用jenkins 执行python文件
- Python list 操作小记
- Python - 多线程、多进程
- Python 简单的文件上传功能
- 使用python+FFmpeg实现m3u8文件内的ts视频 解密、合并 && ffmpeg截取视频
- 【Python & Other】一网打尽 Python复制文本&文件到剪切板
- python小练习6--lambda表达式的使用
- Python中文文件处理中涉及的字符编码及字符集
- python面向对象的继承
- Python 变量类型
- python 小技巧,给设计好的dict 增加嵌套值
- Python PyCrypto(PyCryptodome) ASE实现对文件加密和解密方法
- 二进制文件处理 WAV文件格式解析【利用python 将wav文件音量变小】