1 # 1.
2 # a.读取源文件,并打印
3 with open('a1.txt',mode='r',encoding='utf-8') as f:
4 for line in f:
5 print(line.strip())
6
7 # b. 原文后追加
8 with open('a1.txt',mode='r+',encoding='utf-8') as f:
9 f.seek(0,2) #r+时 直接写入会在开头替换内容,需要将光标移动结尾
10 f.write('\n信不信由你,反正我信了。')
11
12 # c. 源文件打印并结尾添加
13 with open('a1.txt',mode='r+',encoding='utf-8') as f:
14 for line in f:
15 print(line.strip())
16 f.write('\n信不信由你,反正我信了。')
17
18 # d. 清空并替换内容
19 with open('a1.txt',mode='w',encoding='utf-8') as f:
20 f.write('''每天坚持一点,
21 每天努力一点,
22 每天多思考一点,
23 慢慢你会发现,
24 你的进步越来越大。
25 ''')
26
27 # e.
28 import os
29 with open('a1.txt',mode='r',encoding='utf-8') as f,\
30 open('a1_副本.txt',mode='w',encoding='utf-8') as f1:
31 for line in f:
32 if line=='我说的都是真的。哈哈\n': #文件中的enter换行算字节2个
33 f1.write('你们就信吧\n') #先写入这句话
34 f1.write(line) #再写入原来的话
35 else:
36 f1.write(line)
37 f1.flush()
38 os.remove('a1.txt')
39 os.rename('a1_副本.txt','a1.txt')
40
41
42 # 2.
43 # a. r+的模式打开原文件,判断原文件是否可读,是否可写
44 f=open('t1.txt',mode='r+',encoding='utf-8')
45 # print(f.writable())
46 # print(f.readable())
47 # f.close()
48
49 # b. r的模式打开原文件,利用for循环遍历文件句柄
50 f=open('t1.txt',mode='r',encoding='utf-8')
51 for line in f:
52 print(line.strip())
53 f.close()
54
55 # c.
56 f=open('t1.txt',mode='r',encoding='utf-8')
57 s=f.readlines()
58 for i in s:
59 print(i.strip())
60 f.close()
61 '''
62 b中的for循环遍历文件句柄,是一行行的读取文件中的内容.
63 c中的readlines()是将一行的内容读取出来作为列表的元素进行存储,
64 再对列表进行循环,打印其内容.
65 '''
66
67 # d.r模式读取‘葫芦娃,’前四个字符。
68 f=open('t1.txt',mode='r',encoding='utf-8')
69 s=f.read(4) #读取的是字符 seek()是字节
70 print(s)
71 f.close()
72
73 # e.r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。
74 f=open('t1.txt',mode='r',encoding='utf-8')
75 s=f.readline().strip()
76 print(s)
77 f.close()
78
79 # f. r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。
80 f=open('t1.txt',mode='r',encoding='utf-8')
81 lis=f.readlines()
82 for i in range(len(lis)):
83 if i >1:
84 print(lis[i].strip())
85 f.close()
86
87 # g. 以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将原内容全部读取出来。
88 f=open('t1.txt',mode='a+',encoding='utf-8')
89 f.write('老男孩教育')
90 for i in f:
91 print(i.strip())
92 f.close()
93
94 # h. 截取原文件,截取内容:‘葫芦娃,葫芦娃,’============
95
96 f=open('t1.txt',mode='a+',encoding='utf-8')
97 f.truncate(26)
98 f.seek(0) #读取前先将光标移动到前面
99 s=f.read()
100 print(s)
101 f.close()
102
103
104 # 3. 日志变成记录(类似数据库)
105 lis=[]
106 sum=0
107 f=open('a.txt',mode='r',encoding='utf-8')
108 for line in f:
109 dic={}
110 li = line.strip().split(' ')
111 dic['name'] = li[0]
112 dic['price'] = int(li[1])
113 dic['amount']=int(li[2])
114 sum = sum + int(li[1])
115 lis.append(dic)
116 print(lis)
117 print('总价钱为',sum)
118 f.close()
119
120
121 # 4. 文件中所有的alex都替换成大写的SB
122 import os
123 with open('t2',mode='r',encoding='utf-8') as f,\
124 open('t2_副本',mode='w',encoding='utf-8') as f1:
125 for line in f:
126 line=line.replace('alex','SB')
127 f1.write(line)
128 os.remove('t2')
129 os.rename('t2_副本','t2')
130
131
132
133 # 5.
134 li=[]
135 sum=0
136 with open('a1.txt',mode='r+',encoding='utf-8') as f:
137 for line in f:
138 dic={}
139 lis1=line.strip().split(' ')
140 for i in lis1:
141 lis2=i.strip().split(':')
142 dic[lis2[0]]=lis2[1] #文件中末尾处不能够有空格
143 sum=sum+int(dic['price'])
144 li.append(dic)
145 print(li)
146 print(sum)
147
148
149
150 # 6. #一条条记录变成字典
151 li=[]
152 with open('a1.txt',mode='r',encoding='utf-8') as f:
153 fir_line=f.readline().strip().split() #要用readline
154 for line in f:
155 dic={}
156 lis=line.strip().split()
157 for i in range(len(fir_line)):
158 dic[fir_line[i]]=lis[i]
159 li.append(dic)
160 print(li)