1,文件操作

  1,文件路径:

  2,编码方式:utf-8, gbk....

  3,操作方式:只读,只写,追加,读写,写读

          1,只读 :r   rb   不用编码,以什么形式存储就以什么形式读出来

      f = open('  文件名',mode = 'r',encoding = 'utf-8')

      content = f.read()

      print(content)

      f.close()  必须存在

    2,只写:w     没有此文件就会创建,先将源文件的内容全部清除,再写    wb不用编码

    3,追加:a

    4,读写:r+  打开文件直接写和读完再写不一样

       r+b  读写以byte类型

      f = open('log',mode='r+b')

      print(f.read())

      f.write('大猛','小猛'.encode('utf-8'))

      f.close()


     
f = open('log',mode='a+',encoding='utf-8')
     f.write('时倾')
     count = f.tell()
     f.seek(count-9) 调光标
     print(f.read())
     f.close()

    
功能详解:
     f = open('log',mode='r+',encoding='utf-8')
     content=f.read(3) #读出来的都是字符
     f.seek(3) #是按照字节定光标的位置
     f.tell() 告诉你光标的位置
     print(f.tell())
     content = f.read()
     print(content)
     f.close()
   5,光标---文件指针
     seek -- 指定光标移动到某个位置
     tell -- 获取光标当前位置
     truncate -- 获取文件
   6,open() 调用系统命名
     replace()替换
     import os
      os.remove() 删除文件
      os.rename() 重命名文件

   7,其他操作
     
f.readable() #是否可读
line = f.readline() ###一行一行的读
line = f.raedlines() ###每一行当成列表中的一个元素,添加到list中
l1 = f.truncate() #对源文件进行截取
     with open('log',mode='r+',encoding='utf-8') as obj:
       print(obj.read()) ##自动关闭,不用写close,可以同时打开多个文件
2,注册
username = input('请输入你要注册的用户名:')
password = input('请输入你要注册的密码:')
with open('list_of_info',mode='w',encoding='utf-8') as f:
    f.write('{}\n{}'.format(username,password))
print('恭喜你,注册成功')
lis = []
i = 0
while i < 3:
    uname = input('请输入你的用户名:')
    pword = input('请输入你的密码:')
    with open('list_of_info', mode='r+', encoding='utf-8') as f1:
        for line in f1:
            lis.append(line)
    if uname == lis[0].strip() and pword == lis[1].strip():
        print('登陆成功')
        break
    else:print('账号和密码错误')
    print(lis)
    i += 1

 

   3,函数----定义之后,可以在任何需要的地方调用,没有返回值,只是单纯的打印(只定义不调用就一定不执行,先定义后调用)

   1,def  函数名(): 自定定义函数只需要0个参数,接收参数,形参

     函数体

     返回值  =  函数名   

   ret = 函数名()  传递参数:传参  实参

   2,返回值    

     1).没有返回值----返回None
不写return:函数内代码执行完毕后自动结束
只写return:结束一个函数
return None----不常用
return之后都不执行

2).返回一个值
可以返回任何数据类型
只要返回就可以接受到
如果在一个程序中有多个return,只执行第一个
3).返回多个值
多个返回值用多个变量接收:有多少个返回值就用多少变量接收
用一个变量接收,中间用逗号隔开,得到的是一个元祖
  
3,参数
       没有参数
定义函数和调用函数时括号里都不写内容
有一个参数
传什么是什么
有多个参数
位置参数
  4,站在不同角度看参数
       站在实参的角度上:调用函数的时候(给一个序列加上*,就是将这序列按照序列打散)
       按照位置传参
       按照关键字传参
       混着用可以,但是必须先按照位置传参,再按照关键字传参
       不能给同一个变量传多个值
    站在形参角度上:定义函数的时候(给变量加上*,就是组合所有传来的值)
    位置参数:必须传,且有几个参数传几个值
       *args:动态参数,可以接受任意多个按位置传入的参数

    默认参数:可以不传,如果不传就是默认的参数,传了就覆盖
       **kwargs:动态参数,可以接受任意多个按照关键字传入的参数
   5,参数值
    1)只有调用函数的时候
        按照位置传参:直接写参数的值
        按照关键字: 关键字 = 值
    2)定义函数的时候
     位置参数:直接定义参数 必须传
     默认参数:关键字参数:参数名 = '默认的值'
     动态参数:有可以接受任意多个参数
  在参数名之前加*,习惯参数名args,接收的是按照位置传参的值,组成一个元祖
  参数名之前加**,习惯参数名kwargs,接收的是按照关键字传参的值,组成一个字典
  顺序:必须先定义位置参数,*args,后定义默认参数,**kwargs
  6,函数的注释
    def func():
      这个函数实现了什么功能
      参数1:
      参数2:

      :return: 是字符串或者是列表的长度


 
 

    

posted on 2019-03-09 19:45  Cathy_X  阅读(252)  评论(0编辑  收藏  举报