第三周文件处理和函数------上

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)

 

posted @   滴滴滴  阅读(447)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示