Python温习 —— IO读取
Posted Talk is cheap,Show me the code
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python温习 —— IO读取相关的知识,希望对你有一定的参考价值。
读取文件
路径问题
1、在路径前面
加r
,即保持字符原始值的意思
sys.path.append(r\'G:/Python_programing/IO/test.txt\')
2、替换为
双反
斜杠
sys.path.append(\'G:\\Python_programing\\IO\\test.txt\')
3、替换为
正
斜杠
sys.path.append(\'G:/Python_programing/IO/test.txt\')
测试示例
# example 1
f = open(\'G:/Python_programing/IO/test.txt\',\'r\') # 文件路径符号为/ !!!
print(f.read())
f.close()
# example 2
# 由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用,
# 故建议使用try ... finally来实现文件的读取和关闭
try:
f = open(\'G:/Python_programing/IO/test.txt\', \'r\')
print(f.read())
finally:
if f:
f.close()
# example 3
# 引用with语句,自动帮调用close()方法
with open(\'G:/Python_programing/IO/test.txt\', \'r\') as f:
print(f.read())
关于文件读取API函数的选择
- 调用read()会一次性读取文件的全部内容;考虑到内存问题,可以反复调用read(size)方法,每次最多读取size个字节的内容;
- 调用readline()可以每次读取一行内容
- 调用readlines()一次读取所有内容并按行返回list;
二进制
二进制文件
读取二进制文件(图片、视频等) 用\'rb\'模式打开文件即可
测试示例
f = open(\'G:/Python_programing/IO/test.jpg\', \'rb\') # 超大
print(f.read()) # 十六进制表示的字节
字符编码
字符编码规范文件
读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码文件
f = open(\'G:/Python_programing/IO/gbk.txt\',\'r\',encoding=\'gbk\')
s = f.read()
print(s)
f.close()
字符编码不规范文件
open()函数可接收一个errors参数,表示如果遇到编码错误后 --- 如何处理,最简单的方式是直接忽略
f = open(\'G:/Python_programing/IO/gbk.txt\', \'r\', encoding=\'gbk\', errors=\'ignore\')
写文件
#example 1
f = open(\'G:/Python_programing/IO/test.txt\', \'w\')
f.write(\'Hello, world!\')
f.close()
#务必要调用f.close()来关闭文件 --- 写文件时,操作系统不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入
#example 2
with open(\'G:/Python_programing/IO/test.txt\', \'w\') as f:
#以\'w\'模式写入文件时,如果文件已存在,会直接覆盖(相当于删掉后新写入一个文件)
f.write(\'+1\')
# 追加末尾
with open(\'G:/Python_programing/IO/test.txt\', \'a\') as f:
f.write(\'+2\')
# 模式 描述
# t 文本模式 (默认)。
# x 写模式,新建一个文件,如果该文件已存在则会报错。
# b 二进制模式。
# + 打开一个文件进行更新(可读可写)。
# U 通用换行模式(Python 3 不支持)。
#
# r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
# rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
# r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
# rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
#
# w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
# wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
# w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
# wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
#
# a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
# ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
# a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
# ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写
以上是关于Python温习 —— IO读取的主要内容,如果未能解决你的问题,请参考以下文章
java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段