前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python_文件操作代码实例

python_文件操作代码实例

作者头像
Mirror王宇阳
发布于 2020-11-13 03:19:54
发布于 2020-11-13 03:19:54
35300
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  """提示:代码中的内容均被注释,请参考,切勿照搬"""

  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 '''
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-11-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验