读文件

  1 '''
  2 概述:python内置了读写文件的函数,用法和C是兼容的,在磁盘上读写文件的功能
  3 是由操作系统提供的。读写文件的操作就是请求操作系统打开一个文件对象,
  4 然后通过值操作系统提供的接口从这个已经打开的文件中提取数据(读文件),
  5 或者把数据写入到这个文件中(写文件)。
  6 '''
  7 # 读文件
  8 '''
  9 1、打开文件
 10 2、读取内容
 11 3、关闭文件
 12 '''
 13 '''
 14 1、打开文件
 15 '''
 16 '''
 17 语法格式:open(path, mode [,encoding][,errors])
 18 解释:
 19 path:文件路径
 20     文件路径:
 21         相对路径  : 1-读文件.py
 22         绝对路径  : C:\\Users\\xlg\\Desktop\\Day14\\文件操作\\1-读文件.py
 23 mode:文件的打开方式
 24     r :以只读的方式打开文件,文件描述符放在文件的开头位置
 25     rb : 以二进制格式打开文件,文件只读,文件描述符放在文件的
 26     开头位置
 27     r+:以读写的方式打开文件,文件描述符放在文件的开头位置
 28     w:以只写的方式打开文件,如果文件存在,那么覆盖该文件,
 29     如果文件不存在,则会创建文件。
 30     wb:以二进制格式打开文件,文件用于写入,如果文件存在,
 31     那么覆盖该文件,如果文件不存在,则会创建文件。
 32     w+:以读写的方式打开文件
 33     a:打开一个文件用于追加写入,如果文件不存在,则会创建文件;
 34     如果文件存在,则会在文件末尾写入内容。
 35     a+:以读写的方式打开文件
 36 encoding:文件的编码格式
 37     如果有该参数,文件的编码格式是什么,这里赋值同样的编码格式。
 38 errors:错误处理
 39     strict:默认方式,如果遇到非法字符,抛出异常
 40     ignore:忽略非法字符
 41     replace:用?代替非法字符
 42     
 43 open函数:返回值:文件描述符
 44 注:当文件不存在时,抛出异常:FileNotFoundError
 45 '''
 46 # PermissionError : 权限错误  当文件在C盘下有可能会报错
 47 # 将文件放到E或F等盘下。
 48 
 49 # 1.1、打开普通文件
 50 # 相对路径
 51 f1 = open("readFile.txt", mode="r")
 52 print(f1)
 53 # 绝对路径
 54 f2 = open("C:\\Users\\xlg\\Desktop\\read.txt", mode="r")
 55 print(f2)
 56 
 57 # 设置编码格式
 58 f3 = open("readFile.txt","r", encoding="utf-8")
 59 print(f3)
 60 f4 = open("C:\\Users\\xlg\\Desktop\\read.txt", mode="r", encoding="utf-8")
 61 print(f4)
 62 # UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in positon 0:
 63 
 64 # 1.2、以二进制形式打开文件
 65 # 注:不能设置encoding
 66 # ValueError: binary mode doesn't take an encoding argument
 67 f5 = open("readFile.txt", "rb")
 68 print(f5)
 69 
 70 # 1.3、指定错误处理方式
 71 f6 = open("readFile.txt", "r", encoding="utf-8", errors="ignore")
 72 print(f6)
 73 
 74 # 1.4、当文件不存在,以读的方式打开文件会返回错误
 75 # FileNotFoundError: [Errno 2] No such file or directory: 'qwe.txt'
 76 # f7 = open("qwe.txt", "r", encoding="utf-8")
 77 # print(f7)
 78 print('------------------------------------------')
 79 '''
 80 2、读取文件
 81 '''
 82 f3 = open("readFile.txt","r", encoding="utf-8")
 83 # 2.1、read([size]) : 会返回读取的内容,记录光标位置,光标位置自动
 84 # 向后移动
 85 # (1)、read()读取文件中所有的内容
 86 # str1 = f3.read()
 87 # print(str1)
 88 print('-----------------------------')
 89 # (2)、read(size) : 读取size个字符并返回
 90 # str2 = f3.read(3)
 91 # print(str2)
 92 # str3 = f3.read(4)
 93 # print(str3)
 94 
 95 # 2.2、readlines([size])
 96 # (1)、readlines()  读取所有行,将每行的内容放到一个列表中返回
 97 # str4 = f3.readlines()
 98 # print(str4)
 99 # (2)、readlines(size) 当size的值大于0时,实际返回的字符数可能会大于size,
100 # 原因:readlines本事是整行读取,如果涉及到新的一行的内容时,系统
101 # 是由缓存区的,将该行整行的内容返回。
102 # str5 = f3.readlines(15)
103 # print(str5)
104 
105 # 2.3、readline([size])
106 #(1)、readline()  读取整行
107 # str6 = f3.readline()
108 # print(str6)
109 # str7 = f3.readline()
110 # print(str7)
111 # (2)、readline(size) 读取size个字符并返回
112 # str8 = f3.readline(3)
113 # print(str8)
114 
115 # 3、修改描述符的位置:seek(offset)   # 以0开始
116 # 4、返回描述符的位置:tell()
117 print(f3.tell())
118 # f3.read(4)
119 f3.seek(8)
120 print(f3.tell())
121 print(f3.read(3))
122 
123 '''
124 3、关闭文件
125 '''
126 # 文件使用完毕后必须关闭,因为文件会占用操作系统的资源,
127 # 操作系统在同一时间打开的文件数是有限的。
128 # 注:已经关闭的文件不能再继续使用。
129 #语法格式:close()
130 f3.close()
131 
132 # ValueError: I/O operation on closed file.
133 # print(f3.read(3))
134 
135 
136 # 完整过程
137 # 解释:因为文件读写都有可能会出现IOError异常,
138 # 当异常出现时,文件的close的操作是不能再执行的,所以,
139 # 为了保证无论是否出错,都能正确的关闭文件,使用finally来实现。
140 '''
141 try:
142     f4 = open("readFile.txt","r", encoding="utf-8")
143     print(f4.read(4))
144 except FileNotFoundError as e:
145     print("文件不存在")
146 finally:
147     if f4:
148         f4.close()
149 '''
150 
151 # 简洁的方式
152 #解释:with和上面的try的效果是一样的,但是代码相对简洁,
153 # 而且不必我们自己调用close(), 系统会自动执行close()
154 with open("readFile.txt","r", encoding="utf-8") as f1:
155     print(f1.read(6))

 

posted @ 2019-07-29 20:04  巨菜的小鸟  阅读(240)  评论(0编辑  收藏  举报