小作业 9

Posted on 2018-12-21 19:45  爱你的毕加索  阅读(124)  评论(0编辑  收藏  举报

1.有以上文件record.txt,将此文件三人对话每个人的内容单独保存一个文件,并每个文件中不包含对话人名

陈皓:没写完~
苗子瑾:第五个没写完
陈皓:第六个
陈皓:一遇到数学就蒙
苗子瑾:想想就头疼
苗子瑾:等我回宿舍交作业吧……
周愉:看见那个绿色的灯了么
周愉:全灭了我就到家了
陈皓:我家网络出门题了
陈皓:刚给联通打完电话,效率问题~
陈皓:效率问题
苗子瑾:这个图打不开
苗子瑾:这个图
with open('record.txt', encoding='utf-8') as f:
    c = []
    m = []
    z = []
    for i in range(1, 14):
        s = f.readline()
        l = s.split(':')# 以冒号分割
        #print(l)
        l1 = l[1] # 索引值为 0 的是人名,索引值为 1 的是对话内容
        if l[0] == '陈皓':
            #print(l[0])
            c.append(l1)
            #print(c)
        if l[0] == '苗子瑾':
            m.append(l1)
        if l[0] == '周愉':
            z.append(l1)
s1 = ''.join(c)
s2 = ''.join(m)
s3 = ''.join(z)
#print(s1,s2,s3)
# 创建新的文本并写入
with open('c', mode='w+', encoding='utf-8') as f1:
    f1.write(s1)
with open('m', mode='w+', encoding='utf-8') as f2:
    f2.write(s2)
with open('z', mode='w+', encoding='utf-8') as f3:
    f3.write(s3)

2.读入用户输入的文件的路径和一个字符串和行数,将文件中的第n行行首插入用户输入的字符串

def fun():
    fpath = input('请输入一个文件路径:')
    str = input('请输入一个字符串:')
    n = int(input('请输入要插入的行数:'))
    l = [] # 定义一个空列表
    with open(fpath,'r') as f:
        for i in f:
            l.append(i) # 把打开的文件存入列表中
        #print(l)
    l.insert(n-1,str) # 要在第几行插入字符串
    s = ''.join(l)
    with open(fpath,'w+') as f:
        f.write(s) # 把新的内容写入文件
try:
    fun()
except Exception as e:
    print('输入内容与提示不符!{}'.format(e))

3.下面只有一种方式不能打开文件,请尝试,并说明原因?

01.  f = open('E:/test.txt', 'w')

02.  f = open('E:\test.txt', 'w') # 必须双 \\ 或者前面加 r ,否则Python会将反斜杠作为转义符

03.  f = open('E://test.txt', 'w')

04.  f = open('E:\\test.txt', 'w')

4.打开一个文件使用open()函数的时候,通过设置文件的打开方式,决定打开的文件具有哪些性质,请总结都有哪些方式,并说明区别

'r'->只读
'w'->只写,文件已存在则清空,不存在则创建。
'a'->追加,写到文件末尾
'b'->二进制模式,比如打开图像、音频、word文件。
'+'->更新(可读可写)
'r+'不清空,不创建
默认是只读方式打开文件:open(file, mode=’r’)

5.如何将一个文件对象f中的数据存放到列表中

# 第一种方式 (遍历用append存入)
with open('../text','r') as f:
    l = []
    for i in f:
        l.append(i)
    print(l)
# 第二种方式(用list函数)
with open('../text','r') as f:
    l = list(f)
    print(l)

6.如果得到文件对象f的每一行数据,尝试使用多种方法

with open('../text','r') as f:
    n = f.readlines()
    #print(n[1])
    l = []
    for i in range(len(n)):
        l.append(n[i])
    print(l)