oldboy ninth day. I love Python. 文件操作,已经os 两种办法

别的不说,先来一波今天作业的答案, 随做随想的, 没去研究如何优化, 有几道题蛮有意思的,难倒是不难,就是麻烦, 课堂笔记等会晚上的时候再补

第一题

 1 '''
 2 1,有如下文件,a1.txt,里面的内容为:
 3 
 4 老男孩是最好的培训机构,
 5 全心全意为学生服务,
 6 只为学生未来,不为牟利。
 7 我说的都是真的。哈哈
 8 
 9 分别完成以下的功能:
10 a,将原文件全部读出来并打印。
11 b,在原文件后面追加一行内容:信不信由你,反正我信了。
12 c,将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。
13 d,将原文件全部清空,换成下面的内容:
14 
15 每天坚持一点,
16 每天努力一点,
17 每天多思考一点,
18 慢慢你会发现,
19 你的进步越来越大。
20 e,将原文件内容全部读取出来,并在‘我说的都是真的。哈哈’这一行的前面加一行,‘你们就信吧~’然后将更改之后的新内容,写入到一个新文件:a1.txt。
21 '''
22 with open('al.txt',mode= 'w',encoding = 'utf-8') as f:
23     f.write('''老男孩是最好的培训机构,
24 全心全意为学生服务,
25 只为学生未来,不为牟利。
26 我说的都是真的。哈哈''')
27 # a,将原文件全部读出来并打印。
28 with open('al.txt',mode= 'r',encoding = 'utf-8') as f:
29     print(f.read(),'\n')
30 # b,在原文件后面追加一行内容:信不信由你,反正我信了。
31 with open('al.txt',mode= 'a',encoding = 'utf-8') as f:
32     f.write('\n信不信由你,反正我信了。')
33 # c,将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。
34 with open('al.txt',mode = 'r+', encoding = 'utf-8') as f:
35     print(f.read())
36     f.write('信不信由你,反正我信了。')
37 '''
38 d,将原文件全部清空,换成下面的内容:
39 
40 每天坚持一点,
41 每天努力一点,
42 每天多思考一点,
43 慢慢你会发现,
44 你的进步越来越大。'''
45 with open('al.txt', mode='w',encoding='utf-8') as f:
46     f.write('''每天坚持一点,
47 每天努力一点,
48 每天多思考一点,
49 慢慢你会发现,
50 你的进步越来越大。''')
51 # e,将原文件内容全部读取出来,并在‘我说的都是真的。哈哈’这一行的前面加一行,‘你们就信吧~’然后将更改之后的新内容,写入到一个新文件:a1.txt。
52 import os
53 with open('al.txt',mode='r',encoding='utf-8') as f1,\
54     open('a1.txt',mode='w',encoding='utf-8') as f2:
55     content = f1.read()
56     f2.write(content)

第二题:

 1 '''
 2 2,有如下文件,t1.txt,里面的内容为:
 3 
 4 葫芦娃,葫芦娃,
 5 一根藤上七个瓜
 6 风吹雨打,都不怕,
 7 啦啦啦啦。
 8 我可以算命,而且算的特别准:
 9 上面的内容你肯定是心里默唱出来的,对不对?哈哈
10 
11 分别完成下面的功能:
12 a,以r+的模式打开原文件,判断原文件是否可读,是否可写。
13 b,以r的模式打开原文件,利用for循环遍历文件句柄。
14 c,以r的模式打开原文件,以readlines()方法读取出来,并循环遍历        readlines(),并分析b,与c 有什么区别?深入理解文件句柄与            readlines()结果的区别。
15 d,以r模式读取‘葫芦娃,’前四个字符。
16 e,以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。
17 f,以r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。
18 g,以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将        原内容全部读取出来。
19 h,截取原文件,截取内容:‘葫芦娃,葫芦娃,’
20 '''
21 with open('t1.txt',mode='w',encoding='utf-8') as f:
22     f.write('''葫芦娃,葫芦娃,
23 一根藤上七个瓜
24 风吹雨打,都不怕,
25 啦啦啦啦。
26 我可以算命,而且算的特别准:
27 上面的内容你肯定是心里默唱出来的,对不对?哈哈''')
28 # a,以r+的模式打开原文件,判断原文件是否可读,是否可写。
29 with open('t1.txt',mode='r+',encoding='utf-8') as f:
30     print(f.read())
31     f.write('看看我有没有被加入到文档,如果我出现在了文档,那么可写,否则不可写- -')
32 # b,以r的模式打开原文件,利用for循环遍历文件句柄。
33 with open('t1.txt',mode='r',encoding='utf-8') as f:
34     for i in f:
35         print(i)
36 # c,以r的模式打开原文件,以readlines()方法读取出来,并循环遍历        readlines(),并分析b,与c 有什么区别?深入理解文件句柄与readlines()结果的区别。
37 with open('t1.txt',mode='r',encoding='utf-8') as f:
38     for line in f.readlines():   ### 分析, f.readlines() 是把文件里每一行的内容读到,并且一行一行的加入到一个list里面, 如果文件里的内容太多了的话,全部放到列表里面会慢.
39         print(line)              ###  而b是 循环文件句柄,并且一句句打印出来,说明,句柄是可迭代的数据类型,
40 # d,以r模式读取‘葫芦娃,’前四个字符。
41 with open('t1.txt',mode='r',encoding='utf-8') as f:
42     f.seek(0)
43     print(f.read(4))
44 # e,以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。
45 with open('t1.txt',mode='r',encoding='utf-8') as f:
46     c = f.readline().strip()
47     print(c,end='') #  哈哈哈 我把print的回车也删了
48 # f,以r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。
49 with open('t1.txt',mode='r',encoding='utf-8') as f:
50     n = 0
51     print('\n')
52     for i in f.readlines():
53         if n > 1:
54             print(i,end='')
55         n += 1
56     print('')
57 # g,以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将原内容全部读取出来。
58 with open('t1.txt',mode='a+',encoding='utf-8') as f:
59     f.write('\n老男孩教育')
60     f.seek(0)
61     print(f.read())
62 # h,截取原文件,截取内容:‘葫芦娃,葫芦娃,’
63 with open('t1.txt',mode='a+',encoding='utf-8') as f:
64     f.seek(8*3)
65     f.truncate()
66     f.seek(0)
67     print(f.read())

第三题:

 1 '''
 2 3,文件a.txt内容:每一行内容分别为商品名字,价钱,个数。
 3 
 4 apple 10 3
 5 tesla 100000 1
 6 mac 3000 2
 7 lenovo 30000 3
 8 chicken 10 3
 9 
10 通过代码,将其构建成这种数据类型:[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......] 并计算出总价钱。
11 '''
12 lis=[]
13 with open('a.txt',mode='w+',encoding='utf-8') as f:
14     f.write('''apple 10 3
15 tesla 100000 1
16 mac 3000 2
17 lenovo 30000 3
18 chicken 10 3''')
19     f.seek(0)
20     for i in f:
21         lisi=i.strip().split(' ')
22         dic = {'name':'', 'price':None, 'amount':None}
23         n=0
24         for xi in lisi:
25             if n == 0:
26                 dic['name'] = xi
27             elif n ==1:
28                 dic['price'] = int(xi)
29             elif n == 2:
30                 dic['amount'] = int(xi)
31             n += 1
32         lis.append(dic)
33     print(lis)
34     sun = 0
35     for dic in lis:
36         sun += dic['price'] * dic['amount']
37     print(sun)

第四题:

 1 '''4,有如下文件:
 2 
 3 alex是老男孩python发起人,创建人。
 4 alex其实是人妖。
 5 谁说alex是sb?
 6 你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。
 7 
 8 将文件中所有的alex都替换成大写的SB(文件的改的操作)。
 9 '''
10 with open('test4.txt',mode='w',encoding='utf-8') as f:
11     f.write('''alex是老男孩python发起人,创建人。
12 alex其实是人妖。
13 谁说alex是sb?
14 你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。''')
15 import os
16 with open('test4.txt',mode='r',encoding='utf-8') as f,\
17     open('test4_new.txt',mode='w',encoding='utf-8') as f1:
18     for line in f:
19         line =line.replace('alex', 'SB')
20         f1.write(line)
21 os.remove('test4.txt')
22 os.rename('test4_new.txt','test4.txt')

第五题:

 1 '''
 2 5,文件a1.txt内容(升级题)
 3 
 4 name:apple price:10 amount:3 year:2012
 5 name:tesla price:100000 amount:1 year:2013
 6 .......
 7 
 8 通过代码,将其构建成这种数据类型:
 9 [{'name':'apple','price':10,'amount':3},
10 {'name':'tesla','price':1000000,'amount':1}......]
11 并计算出总价钱。
12 '''
13 with open('al.txt',mode='w',encoding='utf-8') as f:
14     f.write('''name:apple price:10 amount:3 year:2012
15 name:tesla price:100000 amount:1 year:2013''')
16 with open('al.txt',mode='r',encoding='utf-8') as f:
17     lis = []
18     for i in f:
19         i = i.strip().split(' ')
20         dic = {}
21         for i1 in i:
22             k, v = i1.split(':')
23             if k == 'year':
24                 continue
25             dic[k] = v
26         lis.append(dic)
27     print(lis)
28     sun = 0
29     for i in lis:
30         sun += int(i['price']) * int(i['amount'])
31     print(sun)

第六题:

扫描二维码关注公众号,回复: 1529484 查看本文章
 1 '''
 2 6,文件a1.txt内容(升级题)
 3 
 4 序号     部门      人数      平均年龄      备注
 5 1       python    30         26         单身狗
 6 2       Linux     26         30         没对象
 7 3       运营部     20         24         女生多
 8 .......
 9 
10 通过代码,将其构建成这种数据类型:
11 [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},
12 ......]
13 '''
14 with open('al.txt',mode='w',encoding='utf-8') as f:
15     f.write('''序号     部门      人数      平均年龄      备注
16 1       python    30         26         单身狗
17 2       Linux     26         30         没对象
18 3       运营部     20         24         女生多''')
19 with open('al.txt',mode='r',encoding='utf-8') as f:
20     con = f.readline().strip().split(' ')
21     lis1 = []
22 
23     key = []
24     for c in con:
25         if c == '':
26             continue
27         key.append(c)
28 
29     for i in f:
30         if i == '序号     部门      人数      平均年龄      备注\n':
31             continue
32         print(i)
33         lis = i.strip().split(' ')
34         n = 0
35         dic = {}
36         for li in lis:
37             if li == '':
38                 continue
39             print(li)
40             dic[key[n]] = li
41             n +=1
42         lis1.append(dic)
43 
44     print(lis1)

猜你喜欢

转载自www.cnblogs.com/Fushengliangnian/p/9156690.html