字符编码/ 文件管理/ 与函数基本定义

一. 字符编码

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
原文地址:https://www.cnblogs.com/junxiansheng/p/6994377.html