在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