第三周文件处理和函数------上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 | = = = = = = = = = = = 第一节文件的读写 - - - 文件写 f = open (r 'ppp.txt' , 'wt' ,encoding = 'utf-8' ) print (f.writable()) f.write( "dfjjhdffdfdfdfdqqqqqqqqqqq\n" ) #自己换行\n f.write( "222222222222\n" ) #自己换行\n f.close() #一般在window上面需要添加r,取消window路径的问题 #rt 一般只写r代表省略了t,文本文件text #图片格式的就不需要编码. #编码和操作系统有关,windows上面是GBK # f=open(r'qq.txt','rt',encoding='utf-8') #写是覆盖 f = open (r 'ppp.txt' , 'wt' ,encoding = 'utf-8' ) print (f.writable()) f.write( "dfjjhdffdfdfdfdqqqqqqqqqqq\n" ) #自己换行\n f.write( "222222222222\n" ) #自己换行\n f.writelines([ 't333t\n' , 'kk4444kk\n' ]) #写多行 f.close() #a 模式文件不存在则创建文件,文件存在则打开文件,把光标移动到文件末尾 f = open (r 'ppp.txt' , 'at' ,encoding = 'utf-8' ) print (f.writable()) f.write( "4444444444444444\n" ) #自己换行\n f.write( "55555555555\n" ) #自己换行\n f.writelines([ '77777\n' , '888888\n' ]) #写多行 f.close() - - - - - - - - - - - - - - - - - - - 一次读出所有文件 f = open (r 'ppp.txt' , 'rt' ,encoding = 'utf-8' ) print (f.read()) # 一次读出所有文件,仅仅适用于文件很小的情况 f.close() - - - - - - - - - - - - - - - - - - - readlines 一次读出放入列表 f = open (r 'ppp.txt' , 'rt' ,encoding = 'utf-8' ) # print(f.read())# 一次读出所有文件,仅仅适用于文件很小的情况 print (f.readlines()) # 一次读出所有文件,仅仅适用于文件很小的情况 f.close() [ 'dfjjhdffdfdfdfdqqqqqqqqqqq\n' , '222222222222\n' , 't333t\n' , 'kk4444kk\n' , '4444444444444444\n' , '55555555555\n' , '77777\n' , '888888\n' ] - - - - - - - - - - - - - - - - - - - - - - - f = open (r 'ppp.txt' , 'rt' ,encoding = 'utf-8' ) print (f.readline(),end = ' ')#一行一行的读,多了一个换行符是print的end=' ',取消 print 的换行符 print (f.readline(),end = ' ')#一行一行的读,多了一个换行符是print的end=' ',取消 print 的换行符 f.close() - - - - - - - - - - - - - - - - - - - - - 循环打印出文件内容: with open (r 'ppp.txt' , 'rt' ,encoding = 'utf-8' ) as f: while True : if len (f.readline()) = = 0 : break print (f.readline(),end = '') - - - - - - - - - - - - - - - - - - 打印出所有内容, for 循环 with open (r 'ppp.txt' , 'rt' ,encoding = 'utf-8' ) as f: for line in f: print (line,end = '') - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - with open (r 'tt.txt' , 'rb' ) as f: print (f.readline().decode( 'utf-8' )) = = = = = = = = = = = = = = = = = = = = = = = = = 二进制写txt with open (r 'tt2.txt' , 'wb' ) as f: print (f.write(( '地方和环境' ).encode( 'utf-8' ))) - - - - - - - - - - - - - 二进制追加写 with open (r 'tt2.txt' , 'ab' ) as f: print (f.write( ( '分担分担' ).encode( 'utf-8' ) ) ) = = = = = = = = = = = = = = = = = = 第二节 with open ( 'tt2.txt' , 'r' ,encoding = 'utf-8' ) as f: print ( type (f)) 默认是读模式,读模式下不可以写. #一次读出所有文件的内容,第二次读取什么内容也无法读出,光标移动到了末尾, with open ( 'tt2.txt' , 'r' ,encoding = 'utf-8' ) as f: print (f.read()) print (f.read()) with open ( 'tt2.txt' , 'r' ,encoding = 'utf-8' ) as f: print (f.readline()) #读一行 #去除print的默认换行符 with open ( 'tt2.txt' , 'r' ,encoding = 'utf-8' ) as f: print (f.readline(),end = '') print (f.readline(),end = '') #读出所有行的内容,每行放入在一个列表 with open ( 'tt2.txt' , 'r' ,encoding = 'utf-8' ) as f: print (f.readlines()) = = = = 文件写模式很危险会清空文件 >清空 with open ( 'tt2.txt' ,mode = 'w' ,encoding = 'utf-8' ) as f: pass = = = 读出一个文件写入另一个文件,相当于CP功能. with open ( 'tt2.txt' ,mode = 'r' ,encoding = 'utf-8' ) as r,\ open ( 'tt3.txt' ,mode = 'w' ,encoding = 'utf-8' ) as w: for i in r: print (i) w.write(i) with open ( 'tt2.txt' ,mode = 'r' ,encoding = 'utf-8' ) as r,\ open ( 'tt3.txt' ,mode = 'w' ,encoding = 'utf-8' ) as w: for i in r: print (i) w.write(i) w.flush() #保证了写入的信息一定被刷新到了磁盘,因为系统有可能攒在内存里面隔一会写入 import sys print (sys.argv) #获取参数 #获取一个参数列表 文件名 和参数顺序 # ['D:\\PycharmProjects\\wadsd\\day3\\文件.py', 'aa', 'bb'] import sys print (sys.argv) #获取参数 _,srcfile,destfile = sys.argv #第一个参数不要第二三个参数解压. print (srcfile) print (destfile) ######cp 命令模仿最终版###################两个encoding 的作用是一个是python文件的编码,一个是处理文件复制文件的编码 #!/usr/bin/env python #encoding:utf-8 import sys print (sys.argv) #获取参数 _,srcfile,destfile = sys.argv print (srcfile) print (destfile) #获取一个参数列表 文件名 和参数顺序 # ['D:\\PycharmProjects\\wadsd\\day3\\文件.py', 'aa', 'bb'] with open (srcfile,mode = 'r' ,encoding = 'utf-8' ) as r,\ open (destfile,mode = 'w' ,encoding = 'utf-8' ) as w: for i in r: print (i) w.write(i) w.flush() #保证了写入的信息一定被刷新到了磁盘,因为系统有可能攒在内存里面隔一会写入 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 第三节文件的修改 - - - - - - - - 模仿vim改文件 #!/usr/bin/env python #encoding:utf-8 import os with open ( 'tt2.txt' ,mode = 'r' ,encoding = 'utf-8' ) as r, open ( '.swaptt2.txt' ,mode = 'w' ,encoding = 'utf-8' ) as w: for i in r: #data=i.replace('e','ax is sb') w.write(i.replace( 'e' , 'ax is sb' )) w.flush() os.remove( 'tt2.txt' ) os.rename( '.swaptt2.txt' , 'tt2.txt' ) - - - - - - - - - - - - vim高效版本 import os with open ( 'tt2.txt' ,mode = 'r' ,encoding = 'utf-8' ) as r, open ( '.swaptt2.txt' ,mode = 'w' ,encoding = 'utf-8' ) as w: for line in r: #data=i.replace('e','ax is sb') if 'g' in line: line = line.replace( 'g' , 'ax is sb' ) w.write(line) w.flush() os.remove( 'tt2.txt' ) os.rename( '.swaptt2.txt' , 'tt2.txt' ) = = = = = = = = = = = = = = = = = = = = = = = 第四节文件内光标的移动 - - - 只有这种情况是字符的情况读取,其他都是字节为单位 with open ( 'tt2.txt' , 'r' ,encoding = 'utf-8' ) as f: print (f.read( 3 )) with open ( 'tt2.txt' , 'rt' ,encoding = 'utf-8' ) as f: print (f.read( 1 )) f.seek( 0 , 0 ) # 0 第一个表示开始的位置0代表文件的开头 第二个参数代表移动的位置 2,从第几个位置开始读,从那里后的几个位置 print (f.read()) #f.seek移动的是字节不是字符,一个汉字3个字节.只有0模式能在txt模式下使用,2是文件的末尾. #txt模式下是能用0. #只有一种情况光标以字符为单位:文件以rt方式打开,read(3) # with open('c.txt','rt',encoding='utf-8') as f: # # print(f.read(6)) # # print(f.tell()) # # f.seek(0,0) # # print(f.read(6)) # # # f.seek(6,0) # f.seek(8,0) # print(f.read()) - - - - 到文件末尾,倒数三个字符. # with open('c.txt','rb') as f: # # f.seek(-3,2) # # print(f.tell()) # f.seek(0,2) - - - - - - - - - - - 一个读取文件末尾的例子 import time with open (r 'D:\PycharmProjects\wadsd\day3\tt3.txt' , 'rb' ) as f: f.seek( 0 , 2 ) while True : line = f.readline() if line: print (line) else : time.sleep( 1 ) = = = = = = = = = = = 第五节截断文件把文件从哪里到哪里保留下来 w模式的写会清空文件,a模式才能截断 import time with open (r 'D:\PycharmProjects\wadsd\day3\tt3.txt' , 'a' ,encoding = 'utf-8' ) as f: f.truncate( 3 ) - - - - - - - - - - 从第三个字符清空文件 import time with open (r 'D:\PycharmProjects\wadsd\day3\tt3.txt' , 'a' ,encoding = 'utf-8' ) as f: f.truncate( 3 ) |
时来天地皆同力,运去英雄不自由
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!