Python语法小白入门
目录
- 1.print函数与转义字符
- 01. 输出函数print()
- 02.转义字符与原字符
- 2.变量与数据类型
- 01.二进制与字符编码
- 02.Python中的标识符和保留字
- 03.变量的定义和使用
- 04.python中常见的数据类型
- 3.input()函数与运算符
- 01.input()函数
- 02.运算符
- 4.选择结构和对象布尔值
- 01.顺序结构
- 01.对象的布尔值
- 02.选择结构
- 5.range()函数与循环结构
- 01.range函数的使用
- 6.列表
- 7.字典
- 8 .元组
- 01.什么是元组
- 02.元组的创建方式
- 03.元组的遍历
- 04.集合的概述与创建
- 05.集合间的关系
- 06.集合的数据操作
- 07.集合生成式
- 9.字符串
- 01.字符串的驻留机制
- 02.字符串的常用操作
- 03.字符串的大小写转换操作
- 04.字符串内容对齐的操作方法
- 05.字符串的劈分
- 06.字符串判断的相关方法
- 07.替换与合并
- 08.字符串的比较操作
- 09.字符串的切片操作
- 10.格式化字符串
- 11.字符串的编码与解码
- 10.函数应用
- 01.函数的定义与调用
- 02.函数调用的参数传递
- 03.函数的参数传递内存分析
- 04.函数的返回值
- 05.函数的参数定义
- 06.变量的作用域
- 07.递归函数
- 11.异常
- 01.bug类型
- 02.Python的异常处理机制
- 03.traceback模块
- 04.PyCharm开发环境的调试
- 12.类和对象
- 01.面向过程和面向对象
- 02.类与对象
- 03.类的创建
- 04.对象的创建
- 05.类属性、类方法、静态方法
- 06.动态绑定属性和方法
- 13.封装继承多态
- 01.封装
- 02.继承
- 03.方法重写
- 04.Object类
- 05.多态的实现
- 06.特殊属性
- 07.类的赋值与浅拷贝
- 14.模块和包
- 01.模块
- 02.模块的导入
- 03.Python中的包
- 04.Python中常用的内容模块
- 05.第三方模块的安装及使用
- 15.文件读写
- 01.编码格式介绍
- 02.文件读写的原理
- 03.常用的文件打开模式
- 04.文件对象常用方法
- 05.with语句(上下文管理器)
- 06.os模块的常用函数
- 16.学生信息管理系统
- 01.项目打包
1.print函数与转义字符
01. 输出函数print()
print()函数:可以将你想展示的内容在IDLE或标准的控制台上显示。
输出内容:数字、字符串、含有运算符的表达式
输出的目的地:显示器、文件
输出到文件中:
fp=open('D:/text.txt','a+')
print('helloworld',file=fp)
- 输出形式:换行、不换行
02.转义字符与原字符
\n 表示换行
\t :根据制表位来填充,4个字符为一个单位。
\r:后边的将前面的覆盖
\b:退一个格
原子符:不希望转义字符起作用,在原子符之前加上r
注意事项:最后一个字符不能是反斜杠。
2.变量与数据类型
01.二进制与字符编码
ASCII码:表示128种符号,对应128种状态
字符编码:在计算机中都是以二进制存储的。
02.Python中的标识符和保留字
保留字:就是关键字,不能以保留字为文件起名和为变量命名。
03.变量的定义和使用
- 变量是内存中一个带标签的盒子
变量组成:标识、类型、值。
当多次赋值之后,变量名会指向新的空间。
04.python中常见的数据类型
- 整数类型:int
二进制:以0b开头,八进制:以0o开头,十六进制:0x开头 - 浮点数类型:float
- 布尔类型:bool
用来表示真或假的值, - 字符串类型:str
字符串又称为不可变的字符序列
三引号可以进行换行
函数的数据类型转换:
name=‘张三’ str(age) 把int类型转换为字符类型
str(),int(),float()
float转成整数类型时会截取整数部分。
Python中的注释:
单行注释:#
多行注释:三引号之间的都是多行注释
中文文档说明:声明文档的属性
#coding:gbk
3.input()函数与运算符
01.input()函数
- 使用:
present=input(‘大圣想要什么礼物顶呢?’)
使用结果是str类型。
02.运算符
标准算数运算符+、-、*、/
取余运算符:%
幂运算符:**
赋值运算符:从右到左
解包赋值,
a,b,c=20,30,40
交换
a,b=b,a比较运算符
大于,小于,运算结果为布尔类型。
a is b 说明a与b的id标识,相等。
is not布尔运算符
and or not in not in位运算符:将数据转成二进制然后再进行运算。
与:同为1时结果为1
或:只要有1结果为1
左移位运算符<<:高位溢出舍弃,低位补0
右移位运算符>>:低位溢出舍弃,高位补0 ,向右移动两位相当于除以2运算符的优先级
先算乘除,后算加减,有幂运算先算幂运算
算数运算>位运算>比较运算>布尔运算4.选择结构和对象布尔值
01.顺序结构
01.对象的布尔值
用bool函数来测试对象的bool值。
bool();
空集合空字典空列表等等布尔值都为false。
02.选择结构
程序根据判断条件的布尔值选择性地执行部分代码,明确的让计算机知道在什么条件下,该去做什么。
双分支结构 :if 条件表达式:
条件执行体1
else:
条件执行体2多分支结构
if :
eIif :
elif :
else:
也可以使用90<=score<=100这种语法嵌套if的使用:
if :
if :条件表达式 x if 判断条件 else y
运算规则: 如果判断条件的布尔值为true,条件表达式的返回值为x,否则条件表达式的返回值为falsepass语句
语句什么都不做,只是占用一个占位符。
5.range()函数与循环结构
01.range函数的使用
- range()函数
用于生成一个整数序列:
创建range对象的三种方式
- r=range(10) //默认从0开始
print(list(r)) - range(3,10)//指定了起始值,从3开始。
- range(3,50,3)//指定起始值,结束值和步长。
- 判断指定的整数在序列中是否存在 in, not in
while循环
while 条件表达式:
条件执行体(循环体)for in 循环
for 自定义的变量 in 可迭代对象:
循环体
for item in 'Python':print(item)
流程控制语句break
break语句:用于结束循环结构,通常与分支结构if一起使用
嵌套循环
循环结构中又嵌套了另外的完整的循环结构,其中内层循环做为外层循环的循环体去执行。二重循环中的break和continue
二重循环中的break 和 continue用于控制本层循环。
6.列表
判断指定元素在列表中是否存在
元素 in 列表名
元素 not in 列表名列表元素的遍历
for 迭代变量 in 列表名列表元素的增加操作
增加操作():
append()在列表的末尾添加一个元素
extend()在列表的末尾至少添加一个元素
insert()在列表的任意位置添加一个元素
切片:在列表的任意位置添加至少一个元素列表元素的删除操作
列表元素的删除操作:
remove(30):从列表中移除第一个元素,如果有重复元素只移第一个元素。
pop():根据索引移除元素。
切片:一次至少删除一个元素
new_list=lst[1:3]
clear():清空列表
del:删除列表列表元素的修改操作
为指定索引的修改一个新值
lis[2]=100
修改列表中的多个值
lst[1:3]=[300,400,500,600]列表元素的排序操作
lst=[]
lst.sort()
lst.sort(reverse=True)降序排序
sorted(lst,reverse=True)降序排序,将产生一个新的列表对象。列表生成式
lst=[ i for i in range(1,10)]
print(lst)
7.字典
字典:
字典是python内置的数据结构之一,与列表一样是一个可变序列,以键值对的方式存储数据
score={'张三':100,‘李四’:20}
字典的实现原理:
字典的实现原理与查字典类似,查字典是先根据部首或拼音查找对应的页码,Python中的字典是根据key查找value所在的位置。
字典的创建:
- 最常用的方式:使用花括号
- 使用内置函数dict()
dict(name='jack',age=20)
字典的获取
- score[‘键’]
- score.get(‘键’)
字典的常用操作:
- key的判断
in
not in - 字典元素的删除
del score['张三']
- 字典元素的新增/修改
scores['Jack']=90
- 清空字典的全部元素
scores.clear()
- 获取字典视图的三个方法
- keys():获取字典中的所有key
- values():获取字典中的所有value
- items()获取字典中的所有key,value对
字典元素的遍历:
for item in socres:print(item)
字典的特点:
- 键不允许重复,value可以重复
- 字典中的元素是无序的
- 字典中的key必须是不可变对象
- 字典也可以根据需要动态地伸缩
- 字典会浪费较大地内存,是一种使用空间换时间地数据结构
字典生成式:
- 内置函数zip():用于将可迭代地对象作为参数,将对象中对应地元素打包成一个元组,然后返回由这些元组组成地列表
d={item:price for item,price in zip(items,prices)}
print(d)
8 .元组
01.什么是元组
可变序列:列表、字典。当元素发生改变时,地址不发生改变
不可变序列:字符串,元组。
元组: python内置的数据结构之一,是一个不可变序列
t=('Python','hello',90)
02.元组的创建方式
- 直接小括号
t=('Python','hello',90)
- 使用内置函数tuple()
t=tuple(('Python','hello',90))
- 只包含一个元组的元素需要使用逗号和小括号
t=(10,)
空元组的创建方式:
-t4=() t5=tuple()
为什么要将元组设计成不可变序列:
- 在多任务环境下,同时操作对象时不需要加锁
- 因此,在程序中尽量使用不可变序列。
03.元组的遍历
t=tuple(('Python','hello',90))
for item in t :print(item)
04.集合的概述与创建
集合:
集合时Python语言提供的内置数据结构,与列表、字典一样都属于可变类型的序列,集合是没有value的字典
- 第一种创建方式
s={5,2,3,9,7,1}//不能重复
- 第二种创建方式
s1=set(range(6))s2=set([1,2,3,4,5,6])print(s1)
定义一个空集合
s7=set()
05.集合间的关系
- 判断两个集合间是否相等
s1==s2 ,s1!=s2
- 一个集合是否是另一个集合的子集
s.issubset(s1) s是不是s1的子集
- 一个集合是否是另一个集合的超集
s.issuperset(s1)
- 两个集合是否有交集
s.isdisjoint(s1)
06.集合的数据操作
- 交集
s1={10,20,30}
s2={20,30,40}
print(s1 & s2)
print(s1.intersection(s2))
- 并集操作
print(s1 | s2)
print(s1.union(s2))
- 差集操作
print(s1.difference(s2))
07.集合生成式
lst=[i*i for i in range(6)]
print(lst)
9.字符串
01.字符串的驻留机制
- 字符串:在Python中字符串是基本数据类型,是一个不可变的字符序列
- 字符串驻留机制:
仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,Python的驻留机制对相同字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。
02.字符串的常用操作
查询方法
- index():查找子串substr第一次出现的位置,如果查找的子串不存在时,则抛出ValueError
- rindex():查找子串substr最后一次出现的位置,如果查找的子串不存在时,则抛出ValueError
- find():查找子串substr第一次出现的位置,如果查找的子串不存在时,则返回-1
- rfind():查找子串substr最后一次出现的位置,如果查找的子串不存在时,则返回-1
03.字符串的大小写转换操作
大小写转换:
upper():把字符串所有字符都转成大写字母(转成大写之后会产生一个新的字符串对象)
lower():把字符串中所有字符都转成小写字母
swapcase():把字符串中所有大写字母转成小写字母,把所有小写字母都转成大写字母
capitalize():把第一个字符转换为大写,其余字符转换为小写
title():把每个单词的第一个字符转换为大写,把每个单词的剩余字符转换为小写
04.字符串内容对齐的操作方法
- center():居中对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回源字符串。
- ljust:左对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回源字符串。
- rjust():右对齐,第一个参数指定宽度,第二个参数指定填充符,第二个参数是可选的,默认是空格,如果设置宽度小于实际宽度则返回源字符串。
- zfill():右对齐,左边用0填充,该方法只接收一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串的长度,返回字符串本身。
05.字符串的劈分
- split():从字符串的左边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表。
以通过参数sep指定劈分字符串的劈分符
s1.split(sep='|')
通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独作为一部分。
- rsplit():从字符串的右边开始劈分,默认的劈分字符是空格字符串,返回的值都是一个列表。
以通过参数sep指定劈分字符串的劈分符
通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分之后,剩余的子串会单独作为一部分。
06.字符串判断的相关方法
- isidentifier():判断指定的字符串是不是合法的字符串(字母,数字,下划线)
- isspace():判断指定的字符串是否全部由空白字符串组成(回车、换行、水平制表符)
- isalpha():判断指定的字符串是否全部由字母组成
- isdecimal():判断指定字符串是否全部由十进制的数字组成
- isnumeric():判断指定的字符串是否全部由数字组成
- isalnum() :判断指定字符串是否全部由字母和数字组成
07.替换与合并
- replace():第一个参数指定被替换的子串,第二个参数指定替换子串的字符串,该方法返回替换后得到的字符串,替换前的字符串不发生变化,调用该方法时可以通过第三个参数指定最大替换次数
s.replace('Python','Java')
- join():将列表或元组中的字符串合并成一个字符串
'|'.join(lst)
08.字符串的比较操作
- 运算符 >,>=,<,<=,==,!=
==与is的区别:
==比较的时value
is比较的是id是否相等
09.字符串的切片操作
- 字符串是不可变类型,不具备增、删、改等操作,切片将产生新的对象。
s='Hello,world'
s1=s[:5]
s2=s[6:]
s3="!"
newstr=s1+s2+s3
print(newstr)
print(start:end:step)
10.格式化字符串
- 格式化字符串的两种方式
%作占位符
print('我叫%s,今年%d岁',%(name,age))
{}作占位符
11.字符串的编码与解码
- 编码:将字符串转换为二进制数据(bytes)
s='天涯共此时'
print(s.encode(encoding='GBK'))
不同编码方式占用的字节数不同
- 解码:将bytes类型的数据转换成字符串类型
bytes.decode(encoding='GBK')
10.函数应用
01.函数的定义与调用
函数: 函数就是执行特定任务以完成特定功能的一段代码
为什么需要函数?
- 复用代码
- 隐藏实现细节
函数的创建:
def 函数名 ([输入参数]):函数体[return xxx]
例如:
def calc(a,b):c=a+breturn cprint(calc(3,4))
02.函数调用的参数传递
函数定义时的参数:形式参数
函数调用时的参数:实际参数
- 位置实参
根据形参对应的位置进行实参传递
def calc(a,b)
calc(10,20)
- 关键字实参
根据形参名称进行实参传递
def calc(a,b)
calc(b=10,a=20)
03.函数的参数传递内存分析
在函数调用过程中,进行参数的传递:如果是不可变对象,在函数体的修改不会影响实参的值,如果是可变对象,在函数体的修改会影响到实参的值
04.函数的返回值
- 函数返回多个值时,结果为元组。
- 函数的返回值,如果是1个,直接返回类型
05.函数的参数定义
- 函数定义默认值参数:函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参
def fun(a,b=10):print(a,b)
- 个数可变的位置参数:
def fun(*args):print(args)fun(10)
fun(10,20,30)
- 个数可变的关键字形参
def fun(**args):print(args)
fun(a=10)
fun(a=10,b=20,c=30)
函数定义时的形参的顺序问题:
从*之后都是参数可变的
06.变量的作用域
- 变量的作用域:程序代码能访问该变量的区域
根据变量的有效范围可分为:- 局部变量 :在函数内定义并使用的变量,只在函数内部有效,局部变量使用global声明,这个变量就会成为全局变量
- 全局变量:函数体外定义的变量,可作用域函数内外
07.递归函数
- 什么是递归函数:如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数。
- 递归的组成部分:递归调用与递归终止条件
- 递归的调用过程:每递归调用一次函数,都会在栈内存分配一个栈帧,每执行完一次函数,都会释放相应的空间。
- 递归的优缺点:
缺点:占用内存多,效率低下
优点:思路和代码简单
11.异常
01.bug类型
- 语法错误 SyntaxError
- 知识点不熟练导致的错误
- 思路不清晰导致的错误
- ZeroDivisionError:除零
- IndexError:序列中没有此索引
- KeyError:映射中没有这个键
- NameError:未声明/初始化对象
- SyntaxError:Python语法错误
- ValueError:传入无效的参数
02.Python的异常处理机制
try…except…else结构
如果try块中没有抛出异常,则执行else块,如果try中抛出异常,则执行except块try…except…else…finally结构:
finally块无论是否发生异常都会被执行,能常用来释放try块中申请的资源。
03.traceback模块
- 使用traceback模块打印异常信息
import traceback
try:print('1.------')num=10/0
except:traceback.print_exc()
04.PyCharm开发环境的调试
- 断点:程序运行到此处,暂时挂起,停止执行。此时可以详细观察程序的运行情况,方便做出进一步判断。
- 进入调试试图:
- 单机工具栏上的按钮
- 右键单击编辑区:点击:debug模块名
- 快捷键:shift+F9
12.类和对象
01.面向过程和面向对象
- 面向过程:事务比较简单,可以用线性的思维去解决。
- 面向对象:事务比较复杂,使用简单的线性思维无法解决。
两者是相辅相成的,不能单一的使用一种方法。
02.类与对象
类是多个类似事物组成的群体的统称。能够帮助我们快速处理和判断事物的性质。
数据类型:
不同的数据类型属于不同的类
使用内置函数type()查看数据类型对象
100、99、520都是int类之下包含的相似的不同个例
03.类的创建
- 创建类的语法
class Student :pass
- 类的组成:
- 类属性
- 实例方法
- 静态方法
- 类方法
class Student:native_pace='吉林' #类属性#实例方法def eat(self):print('学生在吃饭')@classmethod #类方法def cm(cls):print('类方法')#静态方法@staticmethoddef method():print('我使用了statticmethod进行修饰,所以我是静态方法')
04.对象的创建
- 对象的创建又称为类的实例化
语法: 实例名=类名()
05.类属性、类方法、静态方法
- 类属性:类中方法外的变量称为类属性,被该类的所有对象所共享
- 类方法:使用@classmethod修饰的方法,使用类名直接访问的方法
- 静态方法:使用@staticmethod修饰的方法,使用类名直接访问的方法
06.动态绑定属性和方法
class Student:def __init__(self,name,age):self.name=nameself.age=agedef eat(self):print(self.name+'在吃饭')
print('动态绑定属性-----')
stu2=Student('张三',20)
stu2.gender='女'
print(stu2.name,stu2.age)
print(stu2.gender)
print('动态绑定方法----')def show():print('定义在类之外,称为函数')stu2.show=show()
stu2.show
代码中可以自己指定对象的属性
13.封装继承多态
01.封装
- 封装:提高程序的安全性,将数据(属性)和行为(方法)包装到类对象中。
- 继承:提高代码的复用性
- 多态:提高程序的可扩展性和可维护性
封装的实现:
class Student:def __init__(self,name,age):self.name=nameself.__age=age #年龄不希望在类的外部被使用,所以加了两个_def show(self):print(self.name,self.__age)stu=Student('张三',20)
stu.show()
#在类的外面使用name与age
print(dir(stu))
print(stu._Student__age)
02.继承
继承:
- 如果一个类没有继承任何类,则默认继承object
- Python支持多继承
- 定义子类时,必须在其构造函数中调用父类的构造函数
class 子类类名 (父类1,父类2):pass
class Person(object):def __init__(self,name,age):self.name=nameself.age=agedef info(self):print(self.name,self.age)class Student(Person):def __init__(self,name,age,stu_no):super().__init__(name,age)self.stu_no=stu_no
class Teacher(Person):def __init__(self,name,age,teachofyear):super().__init__(name,age)self.teachofyear=teachofyearstu=Student('张三',20,'1001')
teacher=Teacher('李四',34,23)
stu.info()
teacher.info()
03.方法重写
class Teacher(Person):def __init__(self,name,age,teachofyear):super().__init__(name,age)self.teachofyear=teachofyeardef info(self):super().info()print('教龄是'+self.teachofyear)
04.Object类
Object类:
- object类是所有类的父类,因此所有类都有object类的属性和方法。
- 内置函数dir()可以查看指定对象所有属性
- Object有一个_str_()方法,用于返回一个对于"对象的描述",对应于内置函数str()经常用于print()方法,帮我们查看对象的信息,所以我们经常会对__str__()进行重写
05.多态的实现
- 多态:多态就是‘具有多种形态’,它指的是:即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象的类型,动态决定调用哪个对象中的方法。
class Animal(object):def eat(self):print('动物会吃')
class Dog(Animal):def eat(self):print('狗吃骨头...')
class Cat(Animal):def eat(self):print('猫吃鱼...')
class Person:def eat(self):print('人吃五谷杂粮')#定义一个函数
def fun(obj):obj.eat()#开始调用函数
fun(Cat())
fun(Dog())
fun(Animal())
06.特殊属性
- dict:获得类对象或实例对象所绑定的所有属性和方法的字典
x.__dict__
特殊方法:
- len():通过重写_len_()方法,让内置函数len()的参数可以是自定义类型
- add():通过重写_add_()方法,可使用自定义对象具有"+"功能
- new():用于创建对象
- init():对创建的对象进行初始化
07.类的赋值与浅拷贝
#变量的赋值
class CPU:pass
cpu1=CPU()
cpu2=cpu1
- 变量的赋值操作:只是形成两个变量,实际上还是指向同一个对象
- 浅拷贝:Python拷贝一般都是浅拷贝,拷贝时,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用同一个子对象
#类的浅拷贝disk=Disk()
computer =Computer(cpu1,disk)
#浅拷贝
import copy
computer2=copy.copy(computer)
- 深拷贝:使用copy模块的deepcopy函数,递归拷贝对象中包含的子对象,源对象和拷贝对象所有的子对象也不相同
#深拷贝
computer3=copy.deepcopy(computer)
14.模块和包
01.模块
模块:
- 模块英文为Modules
- 函数与模块的关系(一个模块中可以包含Nduoge函数)
- 在Python中一个扩展名为.py的文件就是一个模块
- 使用模块的好处:方便其它程序和脚本的导入并使用
避免函数名和变量名冲突
提高代码的可维护性
提高代码的可重用性
02.模块的导入
- 创建模块:新建一个.py文件,名称尽量不要与Python自带的标准模块名称相同
- 导入模块:import 模块名
from 模块名称 import 函数/变量/类
import math #关于数学运算
print(math.pi)
from math import pi
print(pi)
03.Python中的包
- 包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下
- 作用:代码规范、避免模块名称冲突
- 包与目录的区别:包含__init__.py文件的目录称为包
目录里通常不包含_init_.py文件 - 包的导入
import 包名.模块名
使用from … import可以导入包,模块,变量等等
04.Python中常用的内容模块
- sys:与Python解释器及其环境操作相关的标准库
- time:提供与时间相关的各种函数的标准库
- os:提供了访问操作系统服务功能的标准库
- calendar:提供与日期相关的各种函数的标准库
- urllib:用于读取来自网上(服务器)的数据标准库
- json :用于使用JSON序列化和反序列化对象
- re :用于在字符串中执行正则表达式匹配和替换
- math:提供标准算数运算函数的标准库
- decimal:用于进行精准控制运算精度、有效数位和四舍五入操作的十进制运算
- logging:提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能
05.第三方模块的安装及使用
pip install 模块名
import 模块名
import timeimport schedule
def job():print('哈哈-----')schedule.every(3).seconds.do(job)while True:schedule.run_pending()time.sleep(1)
15.文件读写
01.编码格式介绍
- 常见的字符编码格式
Python的解释器使用的是Unicode(内存)
.py文件在磁盘上使用UTF-8存储(外存)
02.文件读写的原理
- 文件的读写俗称"IO操作"
- 内置函数open()创建文件对象
file=open('a.txt','r')
print(file.readlines())//结果是一个列表
file.close()
03.常用的文件打开模式
- 文件的类型:
文本文件:存储的是普通“字符”文本,默认为unicode字符集,可以使用记事本程序打开
二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专用的软件打开,举例:MP3音频文件,jpg图片,doc文档等 - r:以只读模式打开文件,文件的指针会放在文件的开头
- w:以只写模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖原有内容,文件指针放在文件的开头
- a:以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则在文件末尾追加内容,文件指针在原文件末尾
- b:以二进制方式打开文件,不能单独使用,需要与共它模式一起使用,rb,或者wb
- +:以读写方式打开文件,不能单独使用,需要与其它模式一起使用,a+
04.文件对象常用方法
- read([size]):从文件中读取size个字节或字符的内容返回。若省略[size],则读取到文件末尾,即一次读取文件所有内容
- readline():从文本文件中读取一行内容
- readlines():把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
- write(str):将字符串str内容写入文件
- writelines(s_list):将字符串列表s_list写入文本文件,不添加换行符
- seek(offset[,whence]):把文件指针移动到新的位置,offset
05.with语句(上下文管理器)
- with语句可以自动管理上下文资源,无论什么原因跳出with块,都能保证文件正确的关闭,以此来达到释放资源的目的。
with open('a.txt','r') as file :print(file.read())
文件的复制:
with open('logo.png','rb') as src_file:with open('copy2logo.png','wb') as target_file:target_file.write(src_file.read())
06.os模块的常用函数
- os模块是Python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。
- os模块与os.path模块对于目录或文件进行操作
import os
os.system('notepad.exe')
#直接调用可执行文件
os.startfile('C://qq.exe')
- getcwd():返回当前的工作目录
- listdir(path):返回指定路径下的文件和目录信息
- mkdir(path[,mode]):创建目录
- makedirs(path1/path2…[,mode]):创建多级目录
- rmdir(path):删除目录
- removedirs(path1/path2…):删除多级目录
- chdir(path):将path设置为当前工作目录
os.path模块操作目录相关函数:
- abspath(path):用于获取文件或目录的绝对路径
- exists(path):用于判断文件或目录是否存在,如果存在返回True,否则返回False
- join(path,name):将目录与目录或者文件名拼接起来
- splitext():分离文件名和扩展名
- basename(path):从一个目录提取文件名
- dirname(path):从一个路径中提取文件路径,不包括文件名
- isdir(path):用于判断是否为路径
16.学生信息管理系统
功能:
- 添加学生及成绩信息
- 将学生信息保存到文件中
- 修改和删除学生信息
- 查询学生细腻些
- 根据学生成绩进行排序
- 统计学生的总分
01.项目打包
- 安装第三方模块
pip install PyInstaller
- 执行打包操作
pyinstaller -F E:\video\studentsys\stusystem.py
Python语法小白入门相关推荐
- python入门指南-Python完全小白入门指南
前几天整理了Linux的入门材料Linux运维完全小白入门指南,趁着这热乎劲,又整理了一下自己学Python时候的资料,今天也一并分享出来. 还是之前的说过的,这里只适合初级或者未入门的小白,想看高阶 ...
- 安装python步骤-小白入门:Python安装的10个步骤,极其细致!!
原标题:小白入门:Python安装的10个步骤,极其细致!! 你有没有发现,在自学的时候去群里问大神python怎么安装,基本都不会有人理你,因为他们认为你这问题就跟踩死一只蚂蚁一样简单,都不屑于回答 ...
- python小白从哪来开始-Python爬虫小白入门(一)写在前面
一.前言 你是不是在为想收集数据而不知道如何收集而着急? 你是不是在为想学习爬虫而找不到一个专门为小白写的教程而烦恼? Bingo! 你没有看错,这就是专门面向小白学习爬虫而写的!我会采用实例的方式, ...
- python小白从哪来开始-如何从零开始学习Python【小白入门】
我应该怎么开始呢? 别着急,我们需要先知道Python是什么.我可不太喜欢没有什么解释的大词. 简单来说,Python就是一种你告诉电脑应该怎么做的方法.你也许会问,电脑怎么听得懂英语呢? Pytho ...
- 最好的python爬虫 小白入门教程
Python爬虫入门教程:超级简单的Python爬虫教程 这是一篇详细介绍 Python 爬虫入门的教程,从实战出发,适合初学者.读者只需在阅读过程紧跟文章思路,理清相应的实现代码,30 分钟即可学会 ...
- python笔记小白入门_Python 笔记:全网最详细最小白的Class类和实例详解
面向对象最重要的概念就是类(class)和实例(instance),类是抽象,而实例(Instance)则是一个个具体的对象 面向对象三大特点:封装.继承和多态 class Animal(object ...
- Python爬虫小白入门(六)爬取披头士乐队历年专辑封面-网易云音乐
一.前言 前文说过我的设计师小伙伴的设计需求,他想做一个披头士乐队历年专辑的瀑布图. 通过搜索,发现网易云音乐上有比较全的历年专辑信息加配图,图片质量还可以,虽然有大有小. 我的例子怎么都是爬取图片? ...
- Python爬虫--小白入门---爬取你的第一张图片并且保存本地
爬取思路: 1.找到目标图片,这里以百度图片为例 2.通过页面解析找出图片实际地址 3.通过requests库爬取图片,保存本地 首先百度找一张图片: 然后使用页面解析找出图片实际地址: 这里需要复制 ...
- python redis 小白入门教程
目录 一.redis简介 二.redis参数配置 三.Redis 字符串(String) 一.redis简介 Redis 是一种开源(BSD 许可).内存中数据结构存储,用作数据库.缓存和消息代理.R ...
最新文章
- php程序网站整站301,织梦dede怎么实现整站301
- 科学家研究:生女有撇步 多钙少碰香蕉
- java集成_Java继承
- 2017云栖大会门票转让_「揭秘GP」云栖大会 | Greenplum 6.0 内核优化解读和7.0展望...
- excel vba 快速显示及隐藏所选数据行,并获取多重选择区地址的行列号
- [Study Notes][001][gstreamer] memory
- 索尼申请“Pregius S”商标 或用于CMOS图像传感器
- PyCharm将制表符转换为空格并显示的配置方法
- linux回收内存的方法,linux释放内存的方法
- pytorch tensor 梯度
- 吉哥系列故事——完美队形II(hdu4513+Manacher)
- php $stomp write byte message,PHP通过Stomp协议与,ActiveMQ,通信所遇到的问题
- 基于Key过期失效实现 ‘N分钟内请勿重复提交“ 功能
- 数据哪里找?200个源数据网站全给你!
- keil5 调试不进主函数一直卡在0x1FFFF3B2 F8D01808 LDR r1,[r0,#0x808]
- ins无法发帖_Instagram电脑端直接消息怎么发?
- 仓库温控管理系统(一)系统概述
- sFlow-RT 3.0使用
- 十倍业务增长下,饿了么技术如何应对(中)?
- 2022-04-27 openshift集群kubelet中出现unable to fetch pod logs错误问题定位