python基础学习笔记

本文详细介绍了Python的基础知识,包括字符串的格式化、操作符、内建函数,以及列表、元组、字典等数据结构的使用。还讲解了文件的打开、读写、关闭方法,以及如何处理异常。内容涵盖字符串的转义字符、格式化输出、列表的遍历、字典的增删查改、文件I/O操作等核心概念。
摘要由CSDN通过智能技术生成

笔记得自菜鸟教程,详细内容请到https://www.runoob.com/python3/python3-tutorial.html
补充内容:
1,print()函数会依次打印每个字符串,遇到逗号‘,’会输出一个空格
2,整数的地板除//永远是整数,即使除不尽,//除法只取结果的整数部分
3,字符串和编码
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转为UTF-8编码,用记事本编辑的时候,从文件读取的UTF-8字符被转换成Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件
浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器,所以看到很多网页的源码上会有类似的信息,标识该网页正在用的UTF-8编码
4,在新版的python3中,字符串是以Unicode编码的,也就是说,python是支持多语言的
对于单个字符的编码,pyton提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
python对bytes类型的数据用带b前缀的单引号或双引号表示
以Unicode表示的str通过encode()方法可以编码为指定的bytes
反过来,如果从网络或磁盘上读取了字节流,那么读到数据就是bytes,要把bytes变为str,就需要用到decode()方法
len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数
在操作字符串时,我们经常遇到str和bytes的互相转换,为了避免乱码问题,应当始终坚持使用UTF-8对str和bytes进行转换
为了让python按UTF-8编码读取,通常在文件开头写上代码:# -- coding:utf-8 --
申明了UTF-8编码并不是意味着你的.py文件就是UTF-8编码的,必须并且要确保文本编辑器正在使用UTF-8 without bom编码
5,tuple的意义
因为tuple不可变,所以代码更安全
6,input()返回的数据类型是str,不能直接和整数比较,必须先转成整数
python提供了int()函数
7,continue的作用是提前结束本轮循环,并开始下一轮循环
注意:不要滥用break和continue语句,break和continue会造成代码执行逻辑分叉过多,容易出错,大多数循环并需要用到break和continue语句,可通过修改循环条件或者修改循环逻辑,去掉break和continue语句
8,dict是空间换时间的一种方法
9,pass语句实际上可以用来作为占位符,比如现在没想好怎么写函数的代码,就可以先放一个pass,让代码先运行起来
10,函数的参数
编写程序时,如果可以设计成一个不变对象,那就尽量设计成不变对象
什么要设计str,None 这样的不变对象呢,因为不变对象一旦创建,对象内部的数据就不能修改,这样就减少了有毒修改数据导致的错误。此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有。

python3的六个标准数据类型中
不可变数据3个:Number(数字),String(字符串),Tuple(元组)
可变数据3个:List列表 Dirctionary字典 set集合

在python3中,bool是int的子类,true和false可以和数字相加,true1,false0,会返回true,但可以通过is 来判断类型

变量的命名和使用
慎用小写字母 i 和大写字母 O ,因为它们可能被人堪称数字1和0

pyton元组
元组是另一个数据类型,类似于list
元组用()标示,内部用逗号隔开,但是元组不能二次赋值,相当于只读列表

python数据类型转换
数据类型的转换,只需要将数据类型作为函数名即可

python运算符
1.python算数运算符


  • -减
    *乘
    / 除
    %取模,返回除法的余数
    ** 幂,返回x的y次幂
    // 取整除。向下取接近商的整数>>>9//2 4

2.python比较运算符
== 等于
!= 不等于

大于
< 小于
= 大于等于
<=小于等于

3.python赋值运算符
= 简单的赋值运算符
+=加法赋值运算符
-=减法赋值运算符
/=除法赋值运算符
%=取模赋值运算符
**=幂赋值运算符
//=取整除赋值运算符
:=海象运算符,可在表达式内部为变量赋值
a=’…’
if (n := len(a)) > 10:
print(f"List is too long ({n} elements, expected <= 10)")

python位运算符
&按位与运算符
| 按位或运算符
^按位异或运算符,当两对应的二进位相异是,结果为1
~按位取反运算符
<<左移运算符,运算位的各二进位全部左移若干位,由‘<<’右边的数指定移动的位数

右移运算符,

python逻辑运算符
and 布尔‘与
or 布尔‘或’
not 布尔‘非’

python成员运算符
in 如果在指定的序列中找到值返回true,否则返回false
not in

python身份运算符
is 是判断两个标识符是不是引用自一个对象
is not 判断凉饿标识符是不是引用自不同对象
注意:id()函数用于获取对象内存地址
is 与==区别
is用于判断两个变量引用对象是否为同一个,==用于判断引用变量的值是否相等

数学函数
abs(x) 返回数字的绝对值,如abs(-10)返回10
ceil(x) 返回数字的上入整数,如math.ceil(4.2)返回5
exp(x) 返回e的x次幂
fabs(x) 返回数字的绝对值,如math.fabs(-10)返回10.0
floor(x) 返回数字的下舍整数,如math.floor(4.9)返回4
log(x) 如math.log(100,10)返回2.0
log10(x) 返回以10为基数的x的对数,如math.log10(100)返回2.0
max(x1,x2,…)返回给定参数的最大值,参数可以为序列
min(x1,x2…)返回给定参数的最小值,参数可以为序列
modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示
pow(x,y)返回x**y的值
round(x,n)返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数
实例print ("round(80.264, 2) : ", round(80.264, 2))
sqrt(x)返回数字x的平方根

随机数函数
choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random() 随机生成下一个实数,它在[0,1)范围内。
seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst) 将序列的所有元素随机排序
uniform(x, y) 随机生成下一个实数,它在[x,y]范围内。

三角函数
acos(x) 返回x的反余弦弧度值。
asin(x) 返回x的反正弦弧度值。
atan(x) 返回x的反正切弧度值。
atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值。
cos(x) 返回x的弧度的余弦值。
hypot(x, y) 返回欧几里德范数 sqrt(xx + yy)。
sin(x) 返回的x弧度的正弦值。
tan(x) 返回x弧度的正切值。
degrees(x) 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x) 将角度转换为弧度

数学常量
pi 数学常量 pi(圆周率,一般以π来表示)
e 数学常量 e,e即自然常数(自然常数)

python字符串
python不支持单字符类型,单字符在python中也是作为一个字符串使用
python访问子字符串,可以使用方括号[]来截取字符串
str=‘runoob’
str[:]=‘runoob’
str[0:]=‘runoob’
str[:6]=‘runoob’

python转义字符
在需要在字符中使用特殊字符时,python用反斜杠\转义字符
\在行尾时,续行符
\反斜杠符号
\‘单引号
\“双引号
\a响铃,执行后电脑有响声
\b退格,>>> print(“Hello \b World!”)
Hello World!
\000空
\n换行
\v纵向制表符
\t横向制表符
\r回车,将\r后面的内容移动字符串开头,并逐一替换开头部分的字符,直至将\r后面的内容完成替换完成
\f换页
\yyy,八进制数,y代表0-7的字符,例如\012代表换行
\xyy,十六进制数,以\xkaitou ,y代表的字符,例如\x0a代表换行

python字符串格式化
格式化符号
%c 格式化字符串机器ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整数
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后面的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,
%g %f和%e的简写
%G %f和%E的简写
%p 用十六进制数格式化变量的地址
格式化操作符辅助指令:
符号 功能

  • 定义宽度或者小数点精度
  • 用做左对齐
  • 在正数前面显示加号( + )
    在正数前面显示空格
    # 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
    0 显示的数字前面填充’0’而不是默认的空格
    % ‘%%‘输出一个单一的’%’
    (var) 映射变量(字典参数)
    m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

python三引号
#!/usr/bin/python3
para_str = “”“这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
“””
print (para_str)
一个典型的用例就是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符转义将会非常的繁琐

f-string
f-string时python3.6之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法
f-string格式化字符串以f开头,后面更着字符串,字符串中的表达式用大括号{}抱起来,它会将变量或表达式计算后的值替换进去
实例如下
name = ’runoob‘

unicode字符串
在python2中,普通字符串是以8位ASCII码进行存储的,而unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法实在字符串前面加上前缀u
在python3中,所有的字符串都是unicode字符串

python的字符串内嵌函数
1
capitalize()
将字符串的第一个字符转换为大写
2
center(width, fillchar)
返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
3
count(str, beg= 0,end=len(string))
返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
4
bytes.decode(encoding=“utf-8”, errors=“strict”)
Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
5
encode(encoding=‘UTF-8’,errors=‘strict’)
以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
6
endswith(suffix, beg=0, end=len(string))
检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
7
expandtabs(tabsize=8)
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
8
find(str, beg=0, end=len(string))
检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
9
index(str, beg=0, end=len(string))
跟find()方法一样,只不过如果str不在字符串中会报一个异常。
10
isalnum()
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
11
isalpha()
如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False
12
isdigit()
如果字符串只包含数字则返回 True 否则返回 False…
13
islower()
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
14
isnumeric()
如果字符串中只包含数字字符,则返回 True,否则返回 False
15
isspace()
如果字符串中只包含空白,则返回 True,否则返回 False.
16
istitle()
如果字符串是标题化的(见 title())则返回 True,否则返回 False
17
isupper()
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
18
join(seq)
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
19
len(string)
返回字符串长度
20
ljust(width[, fillchar])
返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
21
lower()
转换字符串中所有大写字符为小写.
22
lstrip()
截掉字符串左边的空格或指定字符。
23
maketrans()
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
24
max(str)
返回字符串 str 中最大的字母。
25
min(str)
返回字符串 str 中最小的字母。
26
replace(old, new [, max])
把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。
27
rfind(str, beg=0,end=len(string))
类似于 find()函数,不过是从右边开始查找.
28
rindex( str, beg=0, end=len(string))
类似于 index(),不过是从右边开始.
29
rjust(width,[, fillchar])
返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
30
rstrip()
删除字符串末尾的空格或指定字符。
31
split(str="", num=string.count(str))
以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串
32
splitlines([keepends])
按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
33
startswith(substr, beg=0,end=len(string))
检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
34
strip([chars])
在字符串上执行 lstrip()和 rstrip()
35
swapcase()
将字符串中大写转换为小写,小写转换为大写
36
title()
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
37
translate(table, deletechars="")
根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中
38
upper()
转换字符串中的小写字母为大写
39
zfill (width)
返回长度为 width 的字符串,原字符串右对齐,前面填充0
40
isdecimal()
检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

python列表
更新列表
可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项
append()方法添加的项放在列表的最后
删除列表元素
del list[n]

python列表脚本操作符
列表对+和*的操作符与字符串相似,+用于组合列表,*用于重复列表

python列表函数&方法
1 len(list)
列表元素个数
2 max(list)
返回列表元素最大值
3 min(list)
返回列表元素最小值
4 list(seq)
将元组转换为列表

1 list.append(obj)
在列表末尾添加新的对象
2 list.count(obj)
统计某个元素在列表中出现的次数
3 list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj)
将对象插入列表
6 list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7 list.remove(obj)
移除列表中某个值的第一个匹配项
8 list.reverse()
反向列表中元素
9 list.sort( key=None, reverse=False)
对原列表进行排序
10 list.clear()
清空列表
11 list.copy()
复制列表

python元组
元组中只包含一个元素时,需要在元素后面添加逗号, 否则括号会被当作运算符使用
注意:元组中的元素时不允许修改的,但可以对元组进行连接组合
元组中的元素时不允许删除的,但我们可以使用del语句来删除整个元组

pyton字典
字典是另一种可变容器模型,且可存储任意类型对象
字典的每个键值key=>value对用冒号: 分割,每个对之间用逗号,分割,整个字典包括在括号{}中
格式如下:
d = {key1 : value1, key2 : value2, key3 : value3 }
键必须时唯一的,但值则不必
删除字典元素
能删除单一的元素也能清空自带你,清空只需要一项操作
del dict[…] 删除单一元素
del dict 删除字典

python集合
集合set是一个无需的不重复元素序列
可以使用大括号{}或者set()函数创建集合
注意:创建一个空集合必须使用set(),而不是{},因为{}是用来创建一个空字典
集合的基本操作
s.add(x)
将元素x添加到集合s中,如果元素已存在,则不进行任何操作
s.remove(x)
将元素x从集合s中一处,如果元素不存在,则会发生错误
s.discard(x)
此方法,如果元素不存在,不会发生错误
计算集合元素个数
len(s)
清空集合
s.clear()

thisset = set((“Google”, “Runoob”, “Taobao”))
thisset.clear()
print(thisset)
set()
判断元素是否在集合中,存在则返回true,不存在则返回false
x in s

python集合内置方法
add() 为集合添加元素
clear() 移除集合中的所有元素
copy() 拷贝一个集合
difference() 返回多个集合的差集
difference_update() 移除集合中的元素,该元素在指定的集合也存在。
discard() 删除集合中指定的元素
intersection() 返回集合的交集
intersection_update() 返回集合的交集。
isdisjoint() 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。
issubset() 判断指定集合是否为该方法参数集合的子集。
issuperset() 判断该方法的参数集合是否为指定集合的子集
pop() 随机移除元素
remove() 移除指定元素
symmetric_difference() 返回两个集合中不重复的元素集合。
symmetric_difference_update() 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。
union() 返回两个集合的并集
update() 给集合添加元素

python编程第一步
斐波那契数列,后面一个数等于前面两个数的和
代码a,b=b,a+b的计算方式为先计算右边表达式,然后同时赋值给左边,等价于
n=b
m=a+b
a=n
b=m
end关键字
关键字end可以用于将结果 输出到同一行,或者在输出的末尾添加不同的字符

python3条件控制
python中用elif代替了else if,所以if语句的关键字为:if - elif - else
注意:
1,每个条件后面要使用哦冒号:,表示接下来是满足条件后要执行的语句块
2,使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块
3,在python中没有switch - case 语句

python循环语句
注意:
在python中没有do … while 循环
可以使用CTRL+C来退出当前的无限循环

range()函数
如果需要遍历数字序列,可以使用内置函数range()函数

break语句可以跳出for和while的循环体
continue语句被用来告诉python跳过当前循环块中的剩余语句,然后进行下一轮循环

循环语句可以有else子句,它在穷尽里欸包(以for循环)或条件变为false(以while循环)导致循环终止时被执行,但循环被break终止时不执行

python3迭代器与生成器
迭代器
迭代时python最强大的功能之一,时访问集合元素的一种方式
迭代器是一个可以记住遍历的位置的对象
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问结束。迭代器智能往前不能后退
迭代器有两个基本的方法:iter()和next()
字符串,列表或元组都可用于创建迭代器
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
for x in it:
print (x, end=" ")
print(next(it))#输出迭代器的下一个元素
创建一个迭代器
把一个类作为一个迭代器使用需要在类中实现两个方法_iter__()与__next__()
类都有一个构造函数,python的构造函数为__init__(),它会在对象初始化时候执行
iter()方法返回一个特殊的迭代器对象,这个迭代器对象实现了额__next__()方法并通过Stoplteration异常标识迭代的完成
next()方法(python2里时next())会返回下一个迭代器对象
StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 next() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。
isinstance(list,Iterable)

生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。
生成器作用,产生一个扔一个,不占用内存空间
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
生成器和列表的区别
在这里插入图片描述

python3函数
加了星号* 的参数会以元组tuple的形式导入
加了两个星号 ** 的参数会以字典的形式导入

python匿名函数
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
实例:
在这里插入图片描述

python数据结构
遍历技巧
在字典遍历时,关键字和对应的值可以使用items()方法同时解读出来
实例:

knights = {‘gallahad’: ‘the pure’, ‘robin’: ‘the brave’}
for k, v in knights.items():
… print(k, v)

gallahad the pure
robin the brave

在序列中遍历时,索引位置和对应值可以使用enumerate()函数同时获得

for i, v in enumerate([‘tic’, ‘tac’, ‘toe’]):
… print(i, v)

0 tic
1 tac
2 toe

同时遍历两个或更多的序列,可以使用 zip() 组合:

questions = [‘name’, ‘quest’, ‘favorite color’]
answers = [‘lancelot’, ‘the holy grail’, ‘blue’]
for q, a in zip(questions, answers):
… print(‘What is your {0}? It is {1}.’.format(q, a))

What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
要反向遍历一个序列,首先指定这个序列,然后调用 reversed() 函数:

for i in reversed(range(1, 10, 2)):
… print(i)

9
7
5
3
1
要按顺序遍历一个序列,使用 sorted() 函数返回一个已排序的序列,并不修改原值:

basket = [‘apple’, ‘orange’, ‘apple’, ‘pear’, ‘orange’, ‘banana’]
for f in sorted(set(basket)):
… print(f)

apple
banana
orange
pear

python3 file
open()函数常用形式是接收两个参数,文件名file,模式mode
open(file, mode=‘r’)
mode参数有
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。

  • 打开一个文件进行更新(可读可写)。
    U 通用换行模式(Python 3 不支持)。
    r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
    r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
    rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
    w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
    wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
    a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
    a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
    ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
    默认为文本模式,如果要以二进制模式打开,加上 b 。

file对象
file对象使用open函数来创建,下表是常用的file对象函数
序号 方法及描述
1
file.close()
关闭文件。关闭后文件不能再进行读写操作。
2
file.flush()
刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
3
file.fileno()
返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
4
file.isatty()
如果文件连接到一个终端设备返回 True,否则返回 False。
5
file.next()
Python 3 中的 File 对象不支持 next() 方法。
返回文件下一行。
6
file.read([size])
从文件读取指定的字节数,如果未给定或为负则读取所有。
7
file.readline([size])
读取整行,包括 “\n” 字符。
8
file.readlines([sizeint])
读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
9
file.seek(offset[, whence])
移动文件读取指针到指定位置
10
file.tell()
返回文件当前位置。
11
file.truncate([size])
从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。
12
file.write(str)
将字符串写入文件,返回的是写入的字符长度。
13
file.writelines(sequence)
向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

python3 os文件/目录方法
os模块提供了非常丰富的方法用来处理文件和目录,常用方法如下
序号 方法及描述
1
os.access(path, mode)
检验权限模式
2
os.chdir(path)
改变当前工作目录
3
os.chflags(path, flags)
设置路径的标记为数字标记。
4
os.chmod(path, mode)
更改权限
5
os.chown(path, uid, gid)
更改文件所有者
6
os.chroot(path)
改变当前进程的根目录
7
os.close(fd)
关闭文件描述符 fd
8
os.closerange(fd_low, fd_high)
关闭所有文件描述符,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略
9
os.dup(fd)
复制文件描述符 fd
10
os.dup2(fd, fd2)
将一个文件描述符 fd 复制到另一个 fd2
11
os.fchdir(fd)
通过文件描述符改变当前工作目录
12
os.fchmod(fd, mode)
改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限。
13
os.fchown(fd, uid, gid)
修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定。
14
os.fdatasync(fd)
强制将文件写入磁盘,该文件由文件描述符fd指定,但是不强制更新文件的状态信息。
15
os.fdopen(fd[, mode[, bufsize]])
通过文件描述符 fd 创建一个文件对象,并返回这个文件对象
16
os.fpathconf(fd, name)
返回一个打开的文件的系统配置信息。name为检索的系统配置的值,它也许是一个定义系统值的字符串,这些名字在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)。
17
os.fstat(fd)
返回文件描述符fd的状态,像stat()。
18
os.fstatvfs(fd)
返回包含文件描述符fd的文件的文件系统的信息,Python 3.3 相等于 statvfs()。
19
os.fsync(fd)
强制将文件描述符为fd的文件写入硬盘。
20
os.ftruncate(fd, length)
裁剪文件描述符fd对应的文件, 所以它最大不能超过文件大小。
21
os.getcwd()
返回当前工作目录
22
os.getcwdb()
返回一个当前工作目录的Unicode对象
23
os.isatty(fd)
如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False。
24
os.lchflags(path, flags)
设置路径的标记为数字标记,类似 chflags(),但是没有软链接
25
os.lchmod(path, mode)
修改连接文件权限
26
os.lchown(path, uid, gid)
更改文件所有者,类似 chown,但是不追踪链接。
27
os.link(src, dst)
创建硬链接,名为参数 dst,指向参数 src
28
os.listdir(path)
返回path指定的文件夹包含的文件或文件夹的名字的列表。
29
os.lseek(fd, pos, how)
设置文件描述符 fd当前位置为pos, how方式修改: SEEK_SET 或者 0 设置从文件开始的计算的pos; SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始. 在unix,Windows中有效
30
os.lstat(path)
像stat(),但是没有软链接
31
os.major(device)
从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field)。
32
os.makedev(major, minor)
以major和minor设备号组成一个原始设备号
33
os.makedirs(path[, mode])
递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。
34
os.minor(device)
从原始的设备号中提取设备minor号码 (使用stat中的st_dev或者st_rdev field )。
35
os.mkdir(path[, mode])
以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制)。
36
os.mkfifo(path[, mode])
创建命名管道,mode 为数字,默认为 0666 (八进制)
37
os.mknod(filename[, mode=0600, device])
创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe)
38
os.open(file, flags[, mode])
打开一个文件,并且设置需要的打开选项,mode参数是可选的
39
os.openpty()
打开一个新的伪终端对。返回 pty 和 tty的文件描述符。
40
os.pathconf(path, name)
返回相关文件的系统配置信息。
41
os.pipe()
创建一个管道. 返回一对文件描述符(r, w) 分别为读和写
42
os.popen(command[, mode[, bufsize]])
从一个 command 打开一个管道
43
os.read(fd, n)
从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。
44
os.readlink(path)
返回软链接所指向的文件
45
os.remove(path)
删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。
46
os.removedirs(path)
递归删除目录。
47
os.rename(src, dst)
重命名文件或目录,从 src 到 dst
48
os.renames(old, new)
递归地对目录进行更名,也可以对文件进行更名。
49
os.rmdir(path)
删除path指定的空目录,如果目录非空,则抛出一个OSError异常。
50
os.stat(path)
获取path指定的路径的信息,功能等同于C API中的stat()系统调用。
51
os.stat_float_times([newvalue])
决定stat_result是否以float对象显示时间戳
52
os.statvfs(path)
获取指定路径的文件系统统计信息
53
os.symlink(src, dst)
创建一个软链接
54
os.tcgetpgrp(fd)
返回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组
55
os.tcsetpgrp(fd, pg)
设置与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组为pg。
56
os.tempnam([dir[, prefix]])
Python3 中已删除。返回唯一的路径名用于创建临时文件。
57
os.tmpfile()
Python3 中已删除。返回一个打开的模式为(w+b)的文件对象 .这文件对象没有文件夹入口,没有文件描述符,将会自动删除。
58
os.tmpnam()
Python3 中已删除。为创建一个临时文件返回一个唯一的路径
59
os.ttyname(fd)
返回一个字符串,它表示与文件描述符fd 关联的终端设备。如果fd 没有与终端设备关联,则引发一个异常。
60
os.unlink(path)
删除文件路径
61
os.utime(path, times)
返回指定的path文件的访问和修改的时间。
62
os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
输出在文件夹中的文件名通过在树中游走,向上或者向下。
63
os.write(fd, str)
写入字符串到文件描述符 fd中. 返回实际写入的字符串长度
64
os.path 模块
获取文件的属性信息。
65
os.pardir()
获取当前目录的父目录,以字符串形式显示目录名。

python错误和异常
python有两种错误很容易辨认:语法错误和异常
python assert断言,用于判断一个表达式,在表达式条件为false的时候触发异常
运行期检测到的错误被成为异常
异常处理
try/except
try语句按照如下方式工作
1,首先,执行try子句(在关键字try和关键字except之间的语句)
2,如果没有异常发生,忽略except子句,try子句执行后结束
3,如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略,如果异常的类型和except之后的名称相符,那么对应的except子句将被执行
4,如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中

try/except…else
else子句将在try子句没有发生任何异常的时候执行

try-finally
try-finally语句无论是否发生异常都将执行最后的代码

抛出异常
python使用raise语句抛出一个指定的异常

用户自定义异常

python面向对象
面向对象技术简介
类class,用来描述具有相同的属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法,对象是类的实例
方法,类中定义的函数
类变量,类变量在整个实例化的对象中是公用的,类变量定义在类中且咋i函数体之外,类变量通常不作为实例变量使用
数据成员,类变量或者实例变量用于处理类及其实例对象的相关的数据
方法重写,如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖,也成为方法的重写
局部变量,定义在方法中的变量,值作用于当前实例的类
实例变量,在类的声明中,属性是用变量来标识的,这种变量就称为实例变量,实例变量就是一个用self修饰的变量
继承,即一个派生类继承基类的字段和方法,继承也允许把一个派生类的对象作为一个基类对象对待,例如,有这样一个设计,一个dog类型的对象派生自animal类,这是模拟‘是一个is-a’关系
实例化,创建一个类的实例,类的具体对象
对象,通过类定义的数据结构实例,对象包括两个数据成员(类变量和实例变量)和方法

类的方法
在类的内部,使用def关键字来定义一个方阿飞,与一般函数定义不同,类放啊必须包含参数self,且作为第一个参数,self代表的是类的实例

私有权限
在属性名和方法名前面加上两个下划线__
类的私有属性和私有方法,都不能通过对象直接访问,但是可以在本类内部访问
类的私有属性和私有方法,都不会被子类继承,子类也无法访问
私有属性和私有方法往往用来处理类的内部事情,不通过对象处理,起到安全作用

方法重写
如果你迭代弗雷方法的功能不能满足你的要求,可以在子类重写你父类的方法
实例
在这里插入图片描述
super()函数是用于嗲用父类(超类)的一个方法

类的专有方法
init : 构造函数,在生成对象时调用
del : 析构函数,释放对象时使用
repr : 打印,转换
setitem : 按照索引赋值
getitem: 按照索引获取值
len: 获得长度
cmp: 比较运算
call: 函数调用
add: 加运算
sub: 减运算
mul: 乘运算
truediv: 除运算
mod: 求余运算
pow: 乘方

运算符重载
python同样支持运算符重载,可以对类的专有方法进行重载
python语言本身提供了很多魔法方法,它的运算符重载就是通过重写这些python内置魔法方法实现的,这些魔法方法都是已双下划线开头和结尾的,类似与__x__的形式,python通过这种特殊的命名方式来拦截操作符,以实现重载

命名空间/作用域
内置名称:
python语言内置的名称,比如函数名abs,char和异常名称BaseException,Exception等等
全局名称:
模块中定义的名称,记录了模块的变量,包括函数,类,其他导入的模块,模块级的变量和常量
局部名称:
函数中定义的名称,记录了函数的变量,包括函数的变量,包括函数的参数和局部定义的变量
命名空间查找顺序,python的查找循序为:局部的命名空间>全局命名空间>内置命名空间
如果找不到变量,它将放弃查找并引发一个NameError异常
NameError:name ‘…’ is not defined.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值