zoukankan      html  css  js  c++  java
  • 字符编码/ 文件管理/ 与函数基本定义

    一. 字符编码

    1.字符编码:
       人能识别的语言 对应 计算机的语言, 一一对一,参考的就是字符编码

      ASCII码表      1bytes=8 bit -------->256 位字符
      GBK编码            2bytes代表一个字符
      unicode万国语言      统一2 bytes代表一个字符          优    点:转换速度快,占用空间大 内存‘读’一般用unicode,但在执行阶段,可变成其他代码。
      UTF-8 可变长的编码    英文:1bytes 中文:3bytes               转换速度慢,占用空间小 硬盘与网路运输‘读’用UTF-8
      文件按什么编码存,按什么解开就不乱码。

      硬盘存储的是二进制
      windows 默认编码是GBK


      python2 <ASCII>
      python3 <utf-8>未执行时没有字符串的概念, 默认把字符串默认成unicode的二进制格式

      #coding:utf-8 #告诉以什么方式读
      乱码:在存的时候乱码,无解。
      读的时候乱码,可以换字符编码。


    二:文件管理操作

      操作硬盘无非是读与写,但是不能直接操作,操作系统为你提供了文件管理系统,而文件管理系统里是一个个的文件,所以你想对文件的具体操作,得以文件为单位进行操作,而python只是一个应用程序不能直接操作硬件 ,而读写硬盘是一种操作硬件的操作,所以只能想操作系统发起系统调用,让操作系统为我们调用硬盘。

      python里为用户提供了open()的操作指令,来发起系统调用,操作文件。

    格式:
      f=open('a.txt','r',encoding='utf-8')        f 相当于操作系统的返回值 /encoding告诉以什么方式打开/'r',默认是以读的方式。

      r模式,默认模式,文件不存在则报错          #读写模式可以以绝对路径的方式打开文件
      w模式,文件不存在创建,文件存在则覆盖
      a模式 文件不存在则创建,文件存在不会覆盖,写内容是追加的方式

     文件操作命令:

    f=open('a.txt','r',encoding='utf-8')          #rb/wb  以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
    f.read()      #读取所有内容,如果文件太大则影响内存
    f.readline    #读取一行的内容
    f.readlines()   #读取所有行,以列表的形式保存
    
    f=open('a.txt','w',encoding='utf-8')
    f.write()     #写内容,必须写的方式打开
    f.close()
    
    f.flush            #把内存书数据刷到硬盘
    f.truncate()           #截断,以字节为单位截取
    f.seek(m,n) #移动光标,以文件开头开始 seek读的是字节,中文一个字是三个字节
            #n=0从开始seek n=1 从当前开始seek n=2 从最后开始seek
    
    
    上下文管理:
    with open('a.txt','w') as f:
        pass
    
    with open('a.txt','r') as read_f,open('b.txt','w') as write_f:
        data=read_f.read()
    View Code

    #r w a rb wb ab b------------>binary二进制 rb ----->以二进制的方式读

    硬盘没有修改的概念,只能覆盖
    内存才可以修改

    import os 模块 覆盖原文件
    os.remove('a.txt') 删除文件
    os.rename('b.txt','a.txt') 重命名

    修改文件名操作:

    import os
    with open('a.txt','r',encoding='utf-8') as read_f,
            open('.a.txt.swap','w',encoding='utf-8') as write_f:
        for line in read_f:
            if line.startswith('hello'):
                line='哈哈哈
    '
            write_f.write(line)
    
    os.remove('a.txt')
    os.rename('.a.txt.swap','a.txt')
    View Code

    三:函数
      1.为何要有函数?
      不加区分地将所有功能的代码垒到一起,问题是:
        代码可读性差  代码冗余  代码可扩展差

      如何解决?
        函数即工具,事先准备工具的过程是定义函数,拿来就用指的就是函数调用

      结论:函数使用必须是:先定义,后调用

    python中函数定义:函数是逻辑结构化和过程化的一种编程方法。
    1 python中函数定义方法:
     2  
     3 def test(x):
     4     "The function definitions"
     5     x+=1
     6     return x
     7      
     8 def:定义函数的关键字
     9 test:函数名
    10 ():内可定义形参
    11 "":文档描述(非必要,但是强烈建议为你的函数添加描述信息)
    12 x+=1:泛指代码块或程序处理逻辑
    13 return:定义返回值
    
    
    调用运行:可以带参数也可以不带
    函数名()
    
    
    #函数的使用:先定义,后调用
    #如何定义函数之定义函数的三种形式
    #1 定义无参函数:函数的执行不依赖于调用者传入的参数就能执行时,需要定义为无参函数
    # def print_tag():
    #     print('*************************')
    
    # def main():
    #     print_tag('*',20,3)
    #     print_msg('hello world')
    #     print_tag('*',20,3)
    #
    # main()
    #2 定义有参数:函数的执行需要依赖于调用者传入的参数才能执行时,需要定义为有参函数
    # def print_tag(tag,count,line_num):
    #     for i in range(line_num):
    #         print(tag*count)

    #3 定义空函数:函数体为pass
    # def func(x,y,z):
    #     pass
  • 相关阅读:
    LeetCode 189. Rotate Array
    LeetCode 965. Univalued Binary Tree
    LeetCode 111. Minimum Depth of Binary Tree
    LeetCode 104. Maximum Depth of Binary Tree
    Windows下MySQL的安装与配置
    LeetCode 58. Length of Last Word
    LeetCode 41. First Missing Positive
    LeetCode 283. Move Zeroes
    《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》读后感
    删除docker下的镜像
  • 原文地址:https://www.cnblogs.com/junxiansheng/p/6994377.html
Copyright © 2011-2022 走看看