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读取的主要内容,如果未能解决你的问题,请参考以下文章

如何从 python 中的嵌套 YAML 文件中读取数据?

java内存流:java.io.ByteArrayInputStreamjava.io.ByteArrayOutputStreamjava.io.CharArrayReaderjava.io(代码片段

温习总结-事务隔离级别cap理论

java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段

python基础知识温习-列表

solr分布式索引实战分片配置读取:工具类configUtil.java,读取配置代码片段,配置实例