目录
编码
二进制
- 用来存放一位0或1,就是计算机里最小的存储单位,叫做【位】,也叫【比特】(bit)。我们规定8个比特构成一个【字节】(byte),这是计算机里最常用的单位。
- bit位:存放一位二进制数,0或1,最小得存储单位
- byte字节:8个二进制为1字节,最常用单位
编码表
- Unicode是内存编码的规范,而UTF-8是如何保存和传输Unicode的手段。
encode()和decode()
- 编码,即将人类语言转换为计算机语言,就是【编码】encode();反之,就是【解码】decode()
格式
#'编码内容'.encode('使用得编码表')
#'解码内容'.decode('使用得编码表')
print('吴枫'.encode('utf-8'))
print('吴枫'.encode('gbk'))
print(b'\xe5\x90\xb4\xe6\x9e\xab'.decode('utf-8'))
print(b'\xce\xe2\xb7\xe3'.decode('gbk'))
文件读写
开-open()
- 绝对路径:绝对路径就是最完整的路径;将文件拖入VScode终端可以获得绝对路径
- 或者右键复制路劲
- 相对路径:指的就是【相对于当前文件夹】的路径
- windows系统中\来表示绝对路径,/表示相对路径
- 格式:文件名=(‘路径’,‘模式’,encoding=‘utf-8’)
- sumlime text3要绝对路径
open('C:\\Users\\Ted\\Desktop\\test\\abc.txt')
#将'\'替换成'\\'
open('abc.txt') #相对路径
#相对路径也可以写成open('./abc.txt')
- ‘r’:表示以读得模式打开文件
模式汇总
r(read,读) | r只读,指针在开头文件不存在则报错 | rb二进制只读,其余同左 | r+读写,其余同左 | rb+二进制读写,其余同左 |
---|---|---|---|---|
w(write,写) | w只写,文件不存在则新建,存在则覆盖 | wb二进制只写,其余同左 | w+读写,其余同左 | wb+二进制读写,其余同左 |
a(append,追加) | a追加,文件存在指针放在末尾,文件不存在则新建 | ab二进制追加,其余同左 | a+追加且可读,其余同左 | ab+二进制追加,且可读,其余同左 |
- **‘wb’**的模式,它的意思是以二进制的方式打开一个文件用于写入。因为图片和音频是以二进制的形式保存的,所以使用wb模式就好了
读-read()
直接读取
变量名=文件名.read()
#变量名=文件名.read()
file1 = open('/Users/Ted/Desktop/test/abc.txt', 'r',encoding='utf-8')
filecontent = file1.read()
ile1=open('abc.txt','r',encoding='utf-8')#定义文件名
file2=file1.read()#读文件并复制给变量
print(file2)
file1.close()#关闭文件
按行读取
- 格式:变量名=文件名.readlines()
- readlines() 会从txt文件取得一个列表,列表中的每个字符串就是文件中的每一行。而且每个字符串后面还有换行的**\n**符号。
- for循环来遍历这个列表
写-write()
'w’模式
file1=open('abc.txt','w',encoding='utf-8')
file1.write('张无忌\n')
file1.close()
- ‘w:表示写入文件’
- 参数为字符串
- 格式:文件名.write(‘内容’)
- **‘w’**写入模式会给你暴力清空掉文件
- **write()**函数写入文本文件的也是字符串类型。
- 在**'w’和’a’模式下,如果你打开的文件不存在,那么open()**函数会自动帮你创建一个
'a’模式
file1 = open('abc.txt', 'a',encoding='utf-8')
#以追加的方式打开文件abc.txt
file1.write('张无忌\n')
#把字符串'张无忌'写入文件file1
file1.write('宋青书\n')
#把字符串'宋青书'写入文件file1
- 追加模式:增加内容而不是覆盖原来的内容
关-close()
- 关闭文件
- 计算机能够打开的文件数量是有限制的,open()过多而不close()的话,就不能再打开文件了。
- 能保证写入的内容已经在文件里被保存好了。
- 文件名.close
file1=open('abc.txt','r',encoding='utf-8')#定义文件名
file2=file1.read()#读文件并复制给变量
print(file2)
file1.close()#关闭文件
关键字with
- 为了避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with
- 格式:with open(‘文件地址’,‘读写模式’) as 变量名:
- 后面编码:encoding=‘utf-8’:如果要文件包括中文要加
# 普通写法
file1 = open('abc.txt','a',encoding='utf-8')
file1.write('张无忌')
file1.close()
# 使用with关键字的写法
with open('abc.txt','a',encoding='utf-8') as file1:
#with open('文件地址','读写模式',encoding='utf-8') as 变量名:
#格式:冒号不能丢
file1.write('张无忌')
#格式:对文件的操作要缩进
#格式:无需用close()关闭
split():分开字符串
- 它会按空格把字符串里面的内容分开
- 最终组合成一个列表
- 格式:变量1=变量2.split()
file1 = open('score.txt','r',encoding='utf-8')
file_lines = file1.readlines()
file1.close()
for i in file_lines: #用for...in...把每一行的数据遍历
data =i.split() #把字符串切分成更细的一个个的字符串
print(data) #打印出来看看
join():合并字符串
- 格式:a.join(b)
- a:用什么连接
- b:要组合字符串的列表
a=['c','a','t']
b=''
print(b.join(a))
c='-'
print(c.join(a))
模块
import语句
调用模块
1、导入模块
- 导入多个模块时:比如import a,b,c可以同时导入“a.py,b.py,c.py”三个文件
2、调用模块时:
- 使用“模块.函数()”调用模块中的函数
- 使用“模块.变量”调用模块中的变量
# 这是主程序main.py
# 请阅读代码注释
import test # 导入test模块
print(test.a) # 使用“模块.变量”调用模块中的变量
test.hi() # 使用“模块.函数()”调用模块中的函数
A = test.Go2() # 使用“变量 = 模块.类()”实例化模块中的类
print(A.a) # 实例化后,不再需要“模块.”
A.do2() # 实例化后,不再需要“模块.”
import…as…
- import story as s语句,意思是为“story”取个别名为“s”
from … import … 语句
- 从模块中导入一个指定的部分到当前模块
- 格式:from (模块名) import(指定模块中的变量名/函数名/类名)
- 效果:导入指定部分可以直接使用,不需要加入‘模块.'前缀
- 同模块多个指定内容:from xx模块 import a,b,c
- 模块中指定所用内容分直接使用:**from xx模块 import * **;*代表“模块中所有的变量、函数、类
if name == ‘main’
- Python 模拟的程序入口
#xx.py文件
代码块1...
if _name_ == '_main_':
代码块2...
#1、当xx.py文件被直接运行时,代码模块2将被运行
#2、当xx.py文件作为模块是被其他程序导入时,戴莫模块2不被执行
scv模块
- 官方文档:看示例
- 注意;创建的excel文档是csv格式,另存
格式
- #参数encoding = 'utf-8’防止出现乱码;一般有中文要加;报错就删或者加
读数据
import csv
with open("C:\\Users\\win10\\Desktop\\code\\.vscode\\python.csv",newline = '') as f:
reader = csv.reader(f)
#使用csv的reader()方法,创建一个reader对象
for row in reader:
#遍历reader对象的每一行
print(row)
print("读取完毕!")
写数据
import csv
with open("C:\\Users\\win10\\Desktop\\code\\.vscode\\python.csv",'a',newline = '',encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow([832,134,1,35,5])