哎呦魏

博客园 首页 新随笔 联系 订阅 管理

一、编码类型

       1、py3 中所有文件默认编码是utf-8 是在硬盘中的存储, 中文占三个字节,英文占一个

                   内存中所有字符都是unicode unicode是万国码 在内存中存储,中英都是两个

  2、在py2中是解码的过程,在py3中自动    # -*-encoding:gbk -*-                        s = "哈哈哈"

    print(s)
    gbk_2_ubicode = s.decode("gbk")
    print(gbk_2_ubicode)
 3、字节类型( bytes )
   (1)、就是二进制,用十六进制看着好计算
    
  b'\xc2\xb7\xc9\xe3'( bytes类型 ) 一个\x是一个字节
二、文件操作
  1、f=open(filename) //打开文件
  2、f.write
("我是好人") //写操作
  3、f.read() //读操作
  4.close() //保存并退出
  5、文本打开模式
    
  r 只读模式 w创建模式,如果文件已在,则覆盖旧文件 a追加模式,新数据写在文件末尾
       写和读不能同时 f.readline() #只读一行
f = open("name_list",mode="w")

f.write("张三")
f.write("李四")
f.write("哈哈哈")
f.close()

f = open("name_list",mode="a")

f.write("张三")
f.write("李四")
f.write("哈哈哈")
f.close()

2021-03-10  15:44:12
一、文件
line = line.split() #把line中的一个个的小字符串变成小列表可以单独调出来
int ( line[3] ) #把line中的第四个字符串变成数字形的
name = None #表示给name一个空值-->name = ""
encoding=None #告诉解释器,当前打开的文件是什么编码
                如果是None,则编译器默认编码是UTF_8
二、视频图片操作
rb 二进制只读模式
wb 二进制创建模式,若文件存在,则覆盖旧文件
ab 追加模式,新数据写在文件末尾
这样读出来的数据就是bytes类型
f = open("QQ截图20210303200725.png","rb")      #读图片
for line in f:
    print(line)                     
f = open("_file","wb")

s = ""
f.write(s.encode("utf-8"))#把f的文件类型变成utf-8的形式,编译器可以识别

 


2021-03-11   21:44:09

windows 中的、\n占两个byte              mac是基于Linux,占一个byte

f = open("seek_write","w")#写文件seek_write
f.write("hello\n")               #写hello
print("返回光标位置",f.tell())          #返回光标的当前位置
f.seek(10)                        #让光标到第十个字节处
f.write("-----------")          #覆盖之前的内容  

 


cpu 内存 硬盘
速度快 中等
     
 要从内存中向硬盘中存数据,因为硬盘太慢,就有了buffer(就像是临时的水桶,水满了就向硬盘中放一次)
f.flush()  #强制进入硬盘中

 

2021-03-12   15:57:26

 一、文件混合模式

w+   写读(没啥用)

r+     读写(有点用)

a+    追加读(文件一打开光标在最后面,写的数据全是追加的形式)

二、文件修改

   不是覆盖,而是往后挤

  1. 发开文件,把内容加载到内存中    
    f = open("wenjian","r+")  #读写wenjian
    
    #第一步  加载到内存
    date = f.read()  #把f中全部的数据都放到内存中
    new_date = print( date.replace("哈哈哈",“嘿嘿嘿”)  ) #用嘿嘿嘿把哈哈哈替换
    
    #第二部  清空文件
    f.seek(0)       #先把光标移到开头
    f.truncate()   #截断文件  把光标后面的数据都删除   f.truncate(100)就是从0开始100个字节保存
    
    #第三步  把新内容写回硬盘
    f.write(new_date)
    
    f.close

     


     

                                              函数编程


  1. def 函数名(): #和c语言差不多
      ·语句
  2. 默认参数


    def stu_register(name, age, course, country = "CN"):
    
       print("姓名", name)
        print("年龄", age)
        print("国籍", country)
        print("课程", courage)
    #国籍默认是CN,默认函数一定要在最后
    stu_register("张三", 12, python);
    stu_register("李四", 32, java ,country = "JP");
    stu_register("李四", 32, java ,"JP");
    #都对


  3. 位置参数     关键参数

    stu_register("李四", course = "python", age = 23 ,country = "JP");
                    位置参数              关键参数
    位置参数要放在最前面
  4. 非固定参数
      1. 要是不知道有几个参数就用这个
        def stu_register(name, age, course, *args)
             stu_register(name, age, course, args[0] )    #可以不写,写的内容都在args中
      2. **
  5. 函数 中断的参数调用时可以不按照顺序
  6. 在 python 中,类型属于对象,变量是没有类型的:

    a=[1,2,3]
    
    a="Runoob"  
  7. 不定长参数
    def printinfo( arg1, *vartuple ):
       "打印任何传入的参数"
       print ("输出: ")
       print (arg1)
       print (vartuple)
     
    # 调用printinfo 函数
    printinfo( 70, 60, 50 )

    函数中变量的名会在字典中储存起来

  8. 函数参数用**写出来就是以字典的形式导出
  9. 如果单独出现星号 * 后的参数必须用关键字传入。

    >>> def f(a,b,*,c):
    ...     return a+b+c
    ... 
    >>> f(1,2,3)   # 报错
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: f() takes 2 positional arguments but 3 were given
    >>> f(1,2,c=3) # 正常
    6
  10. 匿名函数     lambda
    lambda [arg1 [,arg2,.....argn]]:expression

    # 可写函数说明 sum = lambda arg1, arg2: arg1 + arg2
    # 调用sum函数 print ("相加后的值为 : ", sum( 10, 20 ))
    print ("相加后的值为 : ", sum( 20, 20 ))
  11. 强制位置参数

    Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。

    在以下的例子中,形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 或 f 要求为关键字形参:
    def f(a, b, /, c, d, *, e, f):
        print(a, b, c, d, e, f)

    以下使用方法是正确的:

    f(10, 20, 30, d=40, e=50, f=60)

    以下使用方法会发生错误:

    f(10, b=20, c=30, d=40, e=50, f=60)   # b 不能使用关键字参数的形式
    f(10, 20, 30, 40, 50, f=60)           # e 必须使用关键字参数的形式

 

 

 
posted on 2021-03-09 18:03  哎呦魏  阅读(61)  评论(0编辑  收藏  举报