编程语言
首页 > 编程语言> > Python温习(一) —— IO读取

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,温习,txt,open,programing
来源: https://www.cnblogs.com/winz/p/14799214.html