day_08习题

 
分别完成以下的功能:
a,将原文件全部读出来并打印。
b,在原文件后面追加一行内容:信不信由你,反正我信了。
c,将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。
d,将原文件全部清空,换成下面的内容:
每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大。
e,将原文件内容全部读取出来,并在‘我说的都是真的。
哈哈’这一行的前面加一行,‘你们就信吧~’然后将更改之后的新内容,写入到一个新文件:a1.txt。
f = open('abc/al.txt',mode='r',encoding='UTF-8')
content = f.read()
print(content)
f.close()

f = open('abc/al.txt',mode='a',encoding='UTF-8')
f.write("信不信由你,反正我信了")
f.close()

f = open('abc/al.txt',mode='r+',encoding='UTF-8')
content = f.read()
f.write('信不信由你,反正我信了')
print(content)
f.close()

f = open('abc/al.txt',mode='w',encoding='UTF-8')
f.write('''每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大。''')

import  os
with open('abc/al.txt',mode='r+',encoding='UTF-8') as f1,\
     open('abc/al1.txt',mode='w',encoding='UTF-8') as f2:
     lst = f1.readlines()
     for i in range(len(lst)):
         if i == 2:
             f2.write(lst[i])
             f2.write("你们就信吧~\n")
         else:
             f2.write(lst[i])
os.remove('abc/al.txt')
os.rename('abc/al1.txt','abc/al.txt')
View Code

2,有如下文件,t1.txt,里面的内容为:

葫芦娃,葫芦娃,

一根藤上七个瓜

风吹雨打,都不怕,

啦啦啦啦。

我可以算命,而且算的特别准:

上面的内容你肯定是心里默唱出来的,对不对?哈哈

分别完成下面的功能:

a,以r+的模式打开原文件,判断原文件是否可读,是否可写。

b,以r的模式打开原文件,利用for循环遍历文件句柄。

c,以r的模式打开原文件,以readlines()方法读取出来,并循环遍历 readlines(),并分析b,与c 有什么区别?深入理解文件句柄与 readlines()结果的区别。

d,以r模式读取‘葫芦娃,’前四个字符。

e,以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。

f,以r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。

g,以a+模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将 原内容全部读取出来。

h,截取原文件,截取内容:‘葫芦娃,葫芦娃,’

 
f = open('abc/t1.txt',mode='r+',encoding="UTF-8")
if f.readable():
    print("文件可读")
else:
    print('文件不可读')

if f.writable():
     print('文件可写')
else:
     print("文件不可写")


f = open('abc/t1.txt',mode='r',encoding="UTF-8")
for i in f:
    print(i)

f = open('abc/t1.txt',mode='r',encoding="UTF-8")
line = f.readlines()
for i in line:
    print(i)
b,与c 有什么区别:b是直接循环句柄,一行一行输出,c是先把所有内容全部取出变为一个列表,然后输出它,

f = open('abc/t1.txt',mode='r',encoding="UTF-8")
k = f.read(4)
print(k)

f = open('abc/t1.txt',mode='r',encoding="UTF-8")
k = f.readline().strip()
print(k)

f = open('abc/t1.txt',mode='r',encoding="UTF-8")
f.readline()
f.readline()
k = f.read()
print(k)

f = open('abc/t1.txt',mode='a+',encoding="UTF-8")
f.write("老男孩教育")
f.seek(0)
print(f.read())
f.seek(0)
f.seek(24)
f.truncate()
f.seek(0)
print(f.read())
f.close()
View Code

3文件a.txt内容:每一行内容分别为商品名字,价钱,个数。

 

apple 10 3

tesla 100000 1

mac 3000 2

lenovo 30000 3

chicken 10 3

 

通过代码,将其构建成这种数据类型:[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......] 并计算出总价钱。

f = open('abc/a.txt',mode='r',encoding="UTF-8")
dic = []
money = 0
for i in f:
    a,b,c=i.strip().split()
    dic.append({'name':a,"price":int(b),"amount":int(c)})
    k = int(b) * int(c)
    money += k
f.flush()
f.close()
print(money)

4,有如下文件:

 

alex是老男孩python发起人,创建人。

alex其实是人妖。

谁说alex是sb?

你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。

 

将文件中所有的alex都替换成大写的SB文件的改的操作

 
import os
with open('abc\c.txt',mode='r',encoding="UTF-8") as f,\
     open('abc\c1.txt',mode='w',encoding='UTF-8') as f1:
    for i in f:
       k = i.replace('alex','SB')
       f1.write(k)
os.remove('abc\c.txt')
os.rename('abc\c1.txt','abc\c.txt')
 

5,文件a1.txt内容(升级题)

name:apple price:10 amount:3 year:2012
name:tesla price:100000 amount:1 year:2013

.......


通过代码,将其构建成这种数据类型:
[{'name':'apple','price':10,'amount':3},
{'name':'tesla','price':1000000,'amount':1}......]
并计算出总价钱。

 
with open('abc/a1.txt',mode='r',encoding='UTF-8') as f:
money = 0
dic = []
for i in f:
    aaa = {}
    for a in i.strip().split():
        a,b = a.split(':')
        if a == 'year':
            continue
        else:
            aaa.setdefault(a,b)
    dic.append(aaa)
for ak in dic:
    money += int(ak["price"])*int(ak['amount'])
print(money)
 

5,文件a1.txt内容(升级题)

 

序号     部门      人数      平均年龄      备注
1       python    30         26         单身狗
2       Linux     26         30         没对象
3       运营部     20         24         女生多

.......


通过代码,将其构建成这种数据类型:
[{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},
......]

with open('abc/a2.txt', mode='r+', encoding='UTF-8') as f:
    lis = [] # 新建一个空列表
    key = f.readline()  # 打开文本第一行的内容
    lis1 = key.split()  # 把第一行内容切割成列表
    for i in f:                 # 循环从第二行开始的文本内容
        dic ={}             # 新建一个空字典,再循环里因为,每循环一次,就增加一次
        lis2 = i.split()     # 切割这一行内容
        for a in lis2:    # 循环这个列表
            dic.setdefault(lis1[lis2.index(a)],a) #添加到这个新字典里,(k:他是第一行内容,不变的[求a在lst里的索引位置],a[每次循环的内容])
        lis.append(dic)     # 把循环完毕的字典添加到这个列表里
print(lis)      # 输出这个列表

 


猜你喜欢

转载自www.cnblogs.com/chunqiuyu/p/9168190.html