no.3 2018-1-24 文件的写入与读取保存,join()函数 strip()函数 split()函数

程序1:学员管理系统V2.0 (列表嵌套)
程序2:学员管理系统的修改(修改为可以保存输入的学员信息,保存在一个文档中)
程序3:手机销售系统 (作业
1、函数参数传递的问题:(定义函数时可以创建一个参数,在调用函数时带上参数即可)
例如:定义函数:
def get_index(type):(定义函数时最好加上注释)
'''
函数的功能描述:获取用户选择学员序号
:param type: 选择序号的类型 (参数的内容)
:return : 选择的序号(返回的内容)
'''
index = input( '请选择要%s的学员序号:' %type)
调用函数:
index = get_index( '修改' )
index = get_index( '删除' )
2、嵌套列表中也可以使用集体定义列表的功能
例1:一维列表:
name= input( '请输入学员姓名:')
age= input( '请输入学员年龄:')
age= int(age)
sex= input( '请输入学员性别(男/女):')
stu_list=[name,age,sex]
例2:二维列表:
写法1;
new_name= input( '请输入新学员姓名:')
new_age= input( '请输入新学员年龄:')
new_age= int(new_age)
new_sex= input( '请输入新学员性别:')
class_list[stu_id- 1][ 0]=new_name
class_list[stu_id- 1][ 1]=new_age
class_list[stu_id- 1][ 2]=new_sex
写法2:
new_name= input( '请输入新学员姓名:')
new_age= input( '请输入新学员年龄:')
new_age= int(new_age)
new_sex= input( '请输入新学员性别:')
class_list[stu_id- 1]=[new_name,new_age,new_sex]
3、return强制结束函数的执行,return下的代码都不会再执行了。
例如:#判断是否有学员信息,如果没有,直接结束函数的执行
if len(student_list) == 0:
print( '没有学员信息,无法进行修改操作!')
# 强制结束函数的执行 return 下面的代码 都不会再执行了
return
# 1.查询学员信息
query_student()
# 2.选择要修改的学员序号
num = input( '请选择要修改的学员序号:')
4、将数据写入文件进行保存以及从文件中读取数据:
    代码中常用的文件格式:doxc xls txt .h5
不管是写入数据还是读取数据,都需要先打开文件,最后关闭文件,一共三步。
    4.1 打开文件:文件可以在列表中新建文件,也可以使用python内置的open函数打开。
open(‘文件名’,mode='文件的打开模式') 
例如:打开文件,写入模式:file_handle=open('1.txt',mode='w')
       打开文件,读取模式:file_handle=open('1.txt',mode='r')
    使用r参数,r是其默认参数,可传可不传。file_handle=open('1.txt' )即可。
文件的几种打开模式:
    No1:w:只能操作写入。w模式中打开文件,如果文件中有数据,再次写入内容,会把原来的文件内容覆盖掉。
    No2:r:只能读文件。
    No3: a:在文件中追加内容。
    No4: w+:可读可写。
    No5: r+:可读可写。
    No6: a+:可读可追加。
    No7: wb+:写入进制数据。
注:在w,a模式下,如果文件不存在会自动创建文件,r模式必须保证文件存在。在进行读取文件时,最好进行文件是否存在的判断。
判断文件是否存在代码:
#引入OS包
import os
def read_data():
# 1.判断文件是否存在
rs = os.path.exists( 'students_v2.txt')
if rs == True:
# 2.打开文件
file_handle = open( 'students_v2.txt', mode= 'r')
4.2 写入文件:(中文文本在本地文件中可以查看,在pycharm中可能出现乱码)
       如果在文件中先编辑数据再读取文件,读取的文件在敲回车的地方仍然会有换行符。
    法1:write写入:不会自己换行,需要换行的话需要自己输入换行符\n。
           例如: file_handle.write( 'hello world \n ' )
           
file_handle.write( '你好,世界' )
   
法2:writelines()函数,参数必须是一个只存放字符串的列表。会将列表中的字符串紧挨着写在文件中,但是不会自动换行,如果需要换行,手动添加换行符。
file_handle.writelines([ 'hello \n ' , 'world \n ' , '你好 \n ' , '智游 \n ' , 'zhengzhou \n ' ])
4.3 读取数据:
    使用r模式打开文件,做读取文件操作。打开文件的模式,默认就是r模式,如果只是读取文件不用填写mode模式。
    法1:read(int)函数,读取文件内容,括号内参数指定长度,不指定读取所有数据。
   例如:content=file_handle.read()
print(content)
   法2:readline(int)函数,读取文件中的一行数据,参数指定读取的长度。默认读取一行数据(由上向下)。
例如:content=file_handle.readline()
       print(content)
法3:readlines()读取所有行数据,会把每一行的数据作为一个元素,放在列表中返回
          例如:   contents=file_handle.readlines()
               print(contents)
4.4 关闭文件:文件名.close()
例如:file_handle.close()
附:文件存取中两个不太重要的函数:tell()函数,seek()函数
tell()函数,返回当前文件中光标的位置,读取文件中的位置在哪,一个字符是一个位置,空格也算一个字符
offset偏移量
#seek()函数,调整光标的位置(光标的位置,光标的方式(0直接移动到开头,1不动,2到末尾 默认为0))
    例如:file_handle.seek(0,0)
          file_handle.seek(0)
   例如:
file_handle=open('1.txt')
content=file_handle.readline()
print(content)
number=file_handle.tell()
print(number)
5、把单列表中数据的写入文件:(单列表)
list_1 = [ '张三' , '李四' , '王五' ]
file_handle = open ( 'student.txt' , mode = 'w' )
for name in list_1:
     file_handle.write(name)
     file_handle.write( ' \n ' )
file_handle.close()
6、读取文件中的数据,用列表形式输出:(单列表)
   要求:读取文件,并且输出必须是列表形式,格式: ['张三','李四','王五']
file_handle = open ( 'student.txt' , mode = 'r' )
contents = file_handle.readlines()
student_list = []
for name in contents:
     name = name.strip( ' \n ' )
    student_list.append(name)
print (student_list)
file_handle.close()
7、 strip()函数去除字符串中的某些字符。
    例如:去除换行符\n:   name = name.strip( ' \n ' )
8、将嵌套的多个列表写入文本:(多列表)
student_list = [[ '张三' , '22' , '110' ],[ '李四' , '22' , '110' ],[ '王五' , '22' , '110' ]]
file_handle = open ( 'student_v2.txt' , mode = 'w' )
for student in student_list:
    for msg in student:
         file_handle.write(msg)
        file_handle.write( ' ' )
    file_handle.write( ' \n ' )
file_handle.close()
9、从文件中取出数据,输出格式为:(多列表)
          [['张三','22','110'],['李四','22','110'],['王五','22','110']]
file_handle = open ( 'student_v2.txt' , mode = 'r' )
contents = file_handle.readlines()
student_list = []
for msg in contents:
    msg = msg.strip( ' \n ' )
    list_1 = msg.split( ' ' )
    list_1.pop()
    student_list.append(list_1)
file_handle.close()
print (student_list)
10、 join()函数实现把列表中的数据用某字符分开并拼接为一个字符串:
    例如:把列表中的数据用  空格分开并拼接为一个字符串:(使得将嵌套列表中的数据写入文件的过程可以在单次循环中就实现)      
for student in student_list:
    # 把列表中的数据用 空格分开并拼接为一个字符串
    s = ' '.join(student)
    # 写入
    file_handle.write(s)
    file_handle.write('\n')
将  第8条笔记 中的代码使用join()函数实现:
student_list = [['张三','22','110'],['李四','22','110'],['王五','22','110']]
file_handle = open('student_v2.txt',mode='w')
for student in student_list:
    s = ' '.join(student)     
    file_handle.write(s)
    file_handle.write('\n')
file_handle.close()
11、 split()函数通过某个字符分割字符串,返回的是分割完成后的列表;
    例如:通过 空格分割字符串,返回的是分割完成后的列表。(即将分割后得到的字符串,放在列表中返回。)
               list_1 = msg.split( ' ' )

















   

你可能感兴趣的:(no.3 2018-1-24 文件的写入与读取保存,join()函数 strip()函数 split()函数)