"""提示:代码中的内容均被注释,请参考,切勿照搬"""
1 #文件的打开和关闭
2 '''
3 文件对象 = open('文件名','使用方式')
4 rt:读取一个txt文件
5 wt: 只写打开一个txt文件,(如果没有该文件则新建该文件)会覆盖原有内容
6 at:打开一个txt文件,并从文件指针位置追加写内容(文件指针默认在末尾)
7 文件操作错误属于:I/O异常
8 通常的异常:
9 try:
10 f = open('a.txt','wt')
11 except Exception as e:
12 print(e)
13 '''
14 #文件的写操作
15 # 函数: 文件对象.write(s)其中s是待写入文件的字符串{文件对象需要时可写入的对象}
16 '''
17 try:
18 fobj = open('anc.txt','wt') #wt:可写入操作方式/at为在原有的文件内容追加写入
19 fobj.write('\nmore') #写函数
20 fobj.close()
21
22 except Exception as err:
23 print(err)
24
25 结果:anc文件保存至当前目录下,并写入“[换行]more”
26 '''
27 #案例:学生信息储存
28 '''
29 name = 'wanzi'
30 gender = '男'
31 age = 23
32 try:
33 f = open('students.txt','wt')
34 while True:
35 #s = Student(i)
36 #if s:
37 f.write("namegenderge")
38 ans = input("continue(Y/y):")
39 if ans != 'Y' and ans != 'y':
40 break
41 i = i+1
42 f.close()
43
44 except Exception as e:
45 print(e)
46
47 '''
48 #读文件操作 文件对象.read(n) //返回全部字符串或者n字节字符
49 '''
50 def writeFile(): #写文件操作
51 f = open('abc.txt','wt')
52 f.write("Hello world\nI am Code_boy\nMirror_") #三行数据(两个\n)
53 f.close()
54
55 def readFile(): #读文件操作
56 f = open('abc.txt','rt')
57 sread = f.read() #文件内容读取 [如果read(n)有值,则读取n个字符,为空则读取全部]
58 print(sread) #将读取的内容打印输出
59 f.close()
60
61 try:
62 writeFile() #调用写文件函数,写入文件
63 readFile() #调用读文件函数,读出(打印)文件内容
64 except Exception as e:
65 print(e)
66
67 ''''''
68 结果:
69 Hello world
70 I am Code_boy
71 Mirror_
72 '''
73 #读文件操作 文件对象.readline() //返回一行字符串(读取连续的字符串,遇到\n或文件末尾结束)
74 '''
75 def writeFile():
76 f = open('readline.txt','wt')
77 f.write('Hello\nworld')
78 f.close()
79
80 def readlineFile():
81 f = open('readline.txt','rt')
82 sreadline = f.readline() #读取readline文件(只读一行)
83 print(sreadline,'len=',len(sreadline))
84 sreadline = f.readline()
85 print(sreadline, 'len=', len(sreadline))
86 sreadline = f.readline()
87 print(sreadline, 'len=', len(sreadline))
88
89 f.close()
90 try:
91 writeFile()
92 readlineFile()
93 except Exception as e:
94 print(e)
95
96 结果:
97 Hello #readline中的文件内容: Hello\nworld 结合readline的功能,在读取一行的数据
98 len= 6 # ‘Hello\n’ >>>> 共计6个字节(换行是因为读取了\n)
99 world len= 5 #如上类说明
100 len= 0 #文件指针已到达末尾,无法继续读出数据故 len = 0
101
102 '''
103 # .readline()可以使用循环的方式(判断是否读取为空)来读取全部,一般都是使用读单行内容
104 #但是! .readlines(){加了一个‘s'}就可以直接读取全部数据:
105 '''
106 def writeFile():
107 f = open('readline.txt','wt')
108 f.write('Hello\nworld')
109 f.close()
110
111 def readlinesFile():
112 f = open('readline.txt','rt')
113 sreadlines = f.readlines() #读取readlines文件(读全部行)并以list形式返回
114 #因为是以列表格式返回,所以一般情况下会配合循环(for)从readlines()提取每一行循环打印输出
115 for i in range(len(sreadlines)): #1号:利用for输出
116 print(sreadlines[i],end='')
117
118 print(sreadlines) #读全部内容,并且每一行用'\n'(显示)隔开 #2号:直接输出
119 f.close()
120
121 try:
122 writeFile()
123 readlinesFile()
124 except Exception as error:
125 print(error)
126
127 1号结果:
128 Hello
129 world
130 2号结果:
131 ['Hello\n', 'world'] #>>>也就是readlinese()读取数据的储存(list)形式
132 '''
133 #读取文件中的学生信息
134 '''
135 f = open('student1.txt','rt')
136 while True:
137
138 name = f.readline().strip('\n')# *.strip()>>用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
139 if name == '':
140 break
141 gender = f.readline().strip('\n')
142 age = f.readline().strip('\n')
143 f.close()
144 print(name,gender,age)
145 '''
146
147 #文件编码
148 '''
149 #GBK编码:中文字符包含简体和繁体字符,每个字符仅能存储简体中文字符 汉字占二字节
150 #*UTF-8编码:全球通用的编码(默认使用)汉字占三字节
151 #文件打开时,可以指定用encoding参数指定编码例如:
152 # f = open('x.txt','wt',encoding = 'utf-8')
153 # 文件编码直接决定了文件的空间大小
154 '''
155 #案例:UTF-8文件编码
156 '''
157 def writeFile():
158 f = open('utf.txt','wt',encoding = 'utf-8')
159 f.write('Hello I am 王宇阳')
160 f.close()
161
162 def readFile():
163 f = open('utf.txt','rt',encoding='utf-8')
164 sreadlines = f.readlines()
165 for i in sreadlines:
166 print(i)
167 f.close()
168 try:
169 writeFile()
170 readFile()
171 except Exception as error:
172 print(error)
173
174 # 结果: Hello I am 王宇阳
175 '''
176
177 #文件指针(文件结束标志:EOF)...文件对象.tell()[返回一个整数,整数则是指针的位置]
178 '''
179 f = open('zz.txt','wt',encoding='utf-8')
180 print(f.tell()) #指针位置:0
181 f.write('abcdef 你好')
182 print(f.tell()) #指针位置:13
183 f.close()
184 f = open('zz.txt','rt',encoding='utf-8')
185 f.tell() #文件指针归零
186 s = f.read(3)
187 print(s,f.tell()) #输出read读取内容并返回指针位置。读取大小和指针位置相符
188 f.close()
189 #结果:
190 0
191 13
192 abc 3
193 '''
194 #操作指针...文件对象.seek(offset[,whence])
195 # offset:开始的偏移量,代表着需要偏移的字节数
196 # whence:[可选]默认值为‘0’,给offset参数一个定义,表示从那个位置开始偏移,0:文件开头 1:文件当前位置 2:文件末尾
197 #----注意,只有 “rt+ wt+ at+” 的打开方式可以调整指针,其他的打开方式不支持指针操作
198 '''
199 def writeFile():
200 f = open('zz1.txt','wt+',encoding='utf-8')
201 print(f.tell()) #返回初始指针位置 >>> 0
202 f.write('123') #写入3字节内容
203 print(f.tell()) #返回当前(写入文件后的)指针位置
204 f.seek(2,0) #指针从开头位置偏移2字节即:1 2 . 3(点的位置)
205 print(f.tell()) #返回指针位置>>>2
206 f.write('abc') #从当前指针位置写入‘abc’(覆盖了‘3’)
207 print(f.tell()) #返回指针位置>>>5
208 f.close()
209
210 def readFlie():
211 f = open('zz1.txt','rt+',encoding='utf-8')
212 r = f.read()
213 print(r)
214 f.close()
215
216 writeFile()
217 readFlie()
218 #结果:
219 0
220 3
221 2
222 5
223 12abc
224 '''
225 #二进制文件
226 #打开方式:rb wb ab rb+ wb+ ab+
227 '''
228 实践中总结:
229 1' list内容写入文件在需要专成str格式,应为列表格式文件不接受或者采用 (f.a) 的样式;(案例综合:教材管理95-101行)
230 '''
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有