文件操作练习

目录

一、题目描述

二、解析

1、获取文件的内容

2、信息匹配

3、写入文件

三、源码


一、题目描述

         开房查询
                创建函数,传入一个名字,查找到这哥们所有的开房记录,然后写入到以这哥们名字为名的txt文件中 如:张三.txt

二、解析

1、获取文件的内容

        先用上下文管理器打开文件,然后再从对象中读取信息,readlines()是一行一行的读取数据,每一行作为一个字符串存储在列表中

    with open('kaifanglist.txt','r',encoding='utf-8',newline='') as fp:
        # print(date)
        date = fp.readlines()

2、信息匹配

        函数的功能是传入一个名字,然后将开房记录写到以此名字命名的文件夹中,此时需要完成的就是姓名去和传入的名字进行匹配;而此时的信息是以一整个字符串存储在一个列表中,要想得到姓名,则需要对字符串进行处理,一种是将字符串按照逗号切割,得到的是一个个的列表,此时将列表再存入列表中,得到的就是一个二维的列表;此时所要的姓名就是以单个字符串存储在二维列表中也就是s[i][0],然后进行判断即可;

第二种方法相对第一种简单,但是有局限性;字符串有一个方法是判断是否已指定的字符串开始

3、写入文件

        再进行判断之后,把相应的数据写入文件夹即可,因为数据可能有多条,所以写入的方式要是追加的形式(a),如果用w则会对之前的内容进行覆盖,文件中就只有最后一条信息

三、源码

# -*- coding: utf-8 -*-
import json

def search(name):
    s = []
    with open('kaifanglist.txt','r',encoding='utf-8',newline='') as fp:
        date = fp.readlines()
        # print(date)
        for i in range(len(date)):  # eval()可以识别字符串,然后将字符串转化成元组存储起来,然后可以继续对元组操作,将其转化为列表,方便取值以及操作
            print(date[i].split(','))
    for j in range(len(s)):
        if name == s[j][0]:
            with open(f'{name}.txt','a',encoding='utf-8') as file:
                t = json.dumps(s[j])
                file.writelines(t)


if __name__ == '__main__':
    search('孙旸')








def test(name):
    with open('kaifanglist.txt', 'r',encoding="utf-8") as f,open(f'{name}.txt','w',encoding='utf-8') as f1:

        l1 = f.readlines()
        for i in l1:
            if i.startswith(f'{name},'):
                f1.write(i)


test('徐争鸣')

你可能感兴趣的:(#,习题,python)