在python中如何读写txt文本文档

在python中读写TXT文本文件

    使用python内置的open函数 打开txt文件

    open(object,mode)函数 
       object:要打开文件的名称
       mode:选择打开文件的方式
           w:只能操作写入   r:只能读取   a:向文件追加数据 
           w+:可读可写     r+:可读可写  a+:可读可追加
           wb+:写入进制数据

       w模式打开文件,如果文件中有数据,再次写入内容,会把原来数据的覆盖掉

         a模式打开文件,如果文件中有数据,再次写入内容时,不会覆盖原来的数据,而是在其后添加数据

                                     r模式打开文件,做读取文件操作时,文件必须存在,否则会出现如下错误  :            
                                              

         open()函数,mode参数(这种不是必须要传递函数叫做缺省参数)默认就是r模式,如果只是读文件,可以不填写mode模式

  ​w模式下打开文件
    1.打开文件
      file_handle = open ( '1.txt' , mode = 'w' )

     2.向文件中写入数据
     2.1.write 写入,write()函数会将字符串写入到txt文本中
        file_handle.write( 'hello world ' )
       一条数据写完,再次写入数据时,数据会紧跟在原来的数据后面,write()函数不会自动输出换行符,如果需要换行可以输入'\n',例:write('\n')
        file_handle.write( '你好 世界\n ' )

     2.2.writelines()函数 会将列表中的字符串写入文件中,但不会自动换行,如果需要换行,手动添加换行符
        writelines()函数  参数 必须是一个只存放字符串的列表
        file_handle.writelines([ 'hello \n ' , 'world \n ' , '你好 \n ' ])

    3.关闭(保存)文件
     file_handle.close()

​ r模式下打开文件
    1.打开文件
      file_handle = open ( '1.txt' , mode = 'r' )

   2.读取文件内容(文件读取是从光标所在位置开始读取,且读取文件内容时,光标会移动到你读取得内容末尾位置)
       2.1 read(int)函数,读取文件内容,参数可指定读取长度。如果指定读取长度,会按照长度去读取,不指定读取所有数据(返回字符串)
        content = file_handle.read()

      2.2 readline(int) 函数 默认读取文件中一行数据(返回字符串)
         content = file_handle.readline()

      2.3 readlines()读取所有行的数据,会把每一行的数据作为一个元素,放在列表中返回(返回列表)
         contents = file_handle.readlines()
   
   3.关闭文件
     file_handle.close()
      
​其他函数

    1、tell()函数 返回当前文件中光标的位置
      获取光标的位置
      number = file_handle.tell()
     2、seek()函数 
     第一个参数 offset 直接指定文件的光标位置,调整光标位置 offset:偏移量
     第二个参数 whence  whence=0 直接移动到开始位置 whence=1 当前位置  whence=2 末尾位置  whence默认值0

     file_handle.seek(0)

下面是一个简易的学员管理系统:

import os
# 添加学员函数
def add_student():
    # 输入学员姓名、年龄、电话
    name = input('请输入学员姓名:')
    age = input('请输入学员年龄:')
    phone = input('请输入学员电话:')
    # 把name、age、phone放在小列表中
    student = [name, age, phone]
    # 把小列表添加到所有学员的大列表中
    # append(object)  insert(index, object)  extend(iterable)
    print(student_list)
    student_list.append(student)
    print('******添加学员成功******')
    print(student_list)

# 查询学员函数
def query_student():
    # 1.查询所有学员
    # 2.输入学员姓名查询学员  得到查询的学员的序号

    print('**********学员信息列表***********')
    # 遍历大列表
    for x in range(0, len(student_list)):
        # 根据x的值  从大列表中取出小列表
        student = student_list[x]
        # 从小列表中取出姓名、年龄、电话
        name = student[0]
        age = student[1]
        phone = student[2]
        print('序号:%s 姓名:%s 年龄:%s 电话:%s' % (x, name, age, phone))

# 修改学员函数
def update_student():

    # 判断是否有学员信息,如果没有,直接结束函数的执行
    if len(student_list) == 0:
        print('没有学员信息,无法进行修改操作!')
        # 强制结束函数的执行 return 下面的代码 都不会再执行了
        return
    # 1.查询学员信息
    query_student()
    # 2.选择要修改的学员序号
    num = input('请选择要修改的学员序号:')
    # 3.转换为整数
    num = int(num)
    # 4.判断选择学员序号是否在范围内
    while num not in range(0, len(student_list)):
        # 不在范围,重新选择
        num = input('没有该序号,请重选:')
        num = int(num)
    # 5.根据选择的序号取出对应的学员信息小列表
    student = student_list[num]
    new_name = input('请输入修改后的姓名(%s):'%student[0])
    new_age  = input('请输入修改后的年龄(%s):'%student[1])
    new_phone = input('请输入修改后的电话(%s):'%student[2])
    # 6.修改小列表中的数据
    student[0] = new_name
    student[1] = new_age
    student[2] = new_phone
    print('----修改数据完成----')

# 删除学员信息
# 1.根据学员序号删除  2.删除所有学员  3.根据学员姓名删除(有同名的,把同名的都删除)
def delete_student():

    if len(student_list) == 0:
        print('没有学员信息,无法执行删除操作!')
        return

    print('1.根据学员序号删除')
    print('2.删除所有学员')
    # 获取输入的内容 并转换为整数类型
    num = int(input('请选择您的操作:'))
    while num not in range(1, 3):
        num = int(input('选项错误,请重选:'))
    # 判断选择选项
    if num == 1:
        # 1.展示所有学员的信息
        query_student()
        # 2.选择删除的序号
        index = int(input('请输入要删除的学员序号:'))
        # 3.判断选择序号是否在范围内
        while index not in range(0, len(student_list)):
            index = int(input('没有该序号,请重选:'))
        # 4.删除指定索引的数据
        del student_list[index]
        # student_list.pop(index)
    else:
        # 确认删除
        rs = input('确定要删除所有信息?y(确定)/n(取消):')
        if rs == 'y':
            # 删除列表中的所有的数据
            student_list.clear()
        else:
            print('删除数据操作已取消!')
# 学员信息保存函数
def save_data():
    file_handle = open('student_info.txt','w')
    for student in student_list:
        for info in student:
            file_handle.write(info)
            file_handle.write(' ')
        file_handle.write('\n')
    file_handle.close()
# 学员信息读取函数
def read_data():
    if os.path.exists('student_info.txt') == True:
        file_handle = open('Student.txt','r')
        students = file_handle.readlines()
        for student in students:
            student = student.strip('\n')
            list = student.split(' ')
            list.pop()
            student_list.append(list)
        file_handle.close()


# 1.声明大列表,存放所有学员信息
student_list = []
read_data()
print(student_list)
# 2.while循环
while True:
    print('*******学员管理系统V2.0********')
    print('*******出品人:######## ********')
    print('1.添加学员')
    print('2.查询学员')
    print('3.修改学员')
    print('4.删除学员')
    print('0.退出程序')
    print('******************************')
    # 选择操作
    num = input('请选择您的操作:')
    # 转换为整数
    num = int(num)
    # 判断选择的选项是否在范围内
    while num not in range(0, 5):
        # 重新选择
        num = input('没有该选项,请重选:')
        # 把字符串类型转换整数类型
        num = int(num)
    # 根据选择的选项执行对应的操作
    if num == 1:
        # 调用添加学员的函数
        add_student()
    elif num == 2:
        # 调用查询学员的函数
        query_student()
    elif num == 3:
        # 调用修改学员的函数
        update_student()
    elif num == 4:
        # 调用删除学员的函数
        delete_student()
    else:
        save_data()
        print('程序已结束!')
        break
 
 

  • 9
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值