不同方法的使用
1.实例方法(回顾)
定义:第一个参数是self(代表是调用对象)
调用:必须先创建对象(实例化),才能通过对象去调用
用途:操作实例属性(比如self.name)、实例相关的功能。
class Person:
def __init__(self,name):
self.name = name
def greet(self):
print(f"你好我是{self.name}")
person = Person("小明")
person.greet()
print(person.name)
2.什么是静态方法?
静态方法是一种特殊的函数,它虽然定义在类中,但是和类本身没有关系,只靠传入的参数就能完成功能。有点像美国的那种寄宿家庭,就是给点寄养费就在他家住,相当于临时监护人那种。那你付的寄养费就相当于传入的参数,然后临时监护人就相当于类名。
定义:需要修饰器@staticmethod
调用方式:类名.方法名()
class GeometryTool:
@staticmethod
def circle_area(radius):
return 3.14*radius**2 #圆面积计算公式
#可以不用创建对象直接通过方法调用
print(GeometryTool.circle_area(1))
3.什么是类方法?
类方法主要是来操作类属性的,类属性相当于一个类共有的属性,比如一个班级中每个不同的人是实例属性,那和整个班级相关的就是实例属性。
定义:使用修饰器@classmethod
传入的第一个参数是cls,代表类
class Person:
class_id = "八(29)"
@classmethod
def set_class_id(cls,id):
cls.class_id = id
@classmethod
def get_class_id(cls):
return cls.class_id
print(Person.get_class_id())
Person.set_class_id("九(29)")
print(Person.get_class_id())

总结:
我将用最不绕弯子,最直白的方式告诉你三者分别什么时候使用。操作实例属性使用实例方法—第一个参数是self代表调用本身;操作类属性使用类方法—第一个参数是cls代表类;不操作属性只需要入参使用静态方法。
文件操作
1.打开和关闭文件
文件打开后必须要关闭,所以推荐使用第二种方式自动关闭,不需要手动写关闭。
定义:open(“文件名”,“读写模式”,“编码格式”)
f1 = open("test.txt","r",encoding="utf-8")
print(f1.encoding)
f1.close()
print(f1.closed)
with open("test.txt","r",encoding="utf-8") as f2:
print(f2.encoding)
print(f2.closed)
2.文件读写
文件访问模式
+代表可以同时读写,如果是访问二进制文件需要加b模式(如rb,wb等)

读取文件常用方法
(1)read(n):读取指定字符/字节
语法:文件对象.read(n),n为读取的字符数(文本模式)或字节数(二进制模式),如果没有n就是默认读取全部文件
文件读取是由指针的,意思就是光标一样,读取多少个字符下一次就会在读取完字符位置作为开头。
with open("test.txt","r",encoding="utf-8") as f:
print(f.read(2))
print(f.read(7))
print(f.read())

(2)randlines():读取所有行(返回列表)
with open("test.txt","r",encoding="utf-8") as f:
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print("第一行",line1,end="")
print("第二行",line2,end="")
print("第三行",line3,end="")

(3)写文件:write()
文本文件:内容必须是字符串;二进制文件:内容必须是字节串
文本文件写入
只写模式(w):文件不存在则创建,存在则覆盖原有内容
with open("test.txt","w",encoding="utf-8") as f:
f.write("go!go!go!")
追加模式(a):文件不存在则创建,存在则新内容会追加在文件末尾,不会覆盖已有内容
with open("test.txt","a",encoding="utf-8") as f:
f.write("出发喽!")
读写二进制文件:图片,视频等
with open("image.png","rb") as f1:
image_data=f1.read()
print(image_data)
with open("image_cv.png","wb") as f2:
f2.write(image_data)

(4)文件指针定位:
文件指针是“下次读写的起始位置,默认:读模式指针在文件开头;写/追加模式在指针末尾
常用方法:
tell():返回当前指针位置(字节数);
seek(offset,whence):移动指针(offset:偏移量;whence:参考点:0【文件开头】1【当前位置】2【文件末尾】)
with open("test.txt","w+",encoding="utf-8") as f:
f.write("go!go!go!出发喽!")
print("移动前指针位置:",f.tell())
f.seek(0)
print("移动后指针位置:",f.tell())
print(f.read())

(5)常见错误:

3.文件目录常用操作
前提:导入os模块
import os #导入操作系统相关模块
文件操作:重命名和删除
(1)重命名文件/目录:os.rename()
核心功能:给文件或目录该名字,还能实现:移动文件到同一磁盘的其他目录“
import os #导入操作系统相关模块
#重命名文件
os.rename("test.txt","oracle.txt")
os.rename("oracle.txt",r"D:\pythonjob\test_01")
(2)删除文件:os.remove()
核心功能:删除指定路径的文件(只能删文件,不能删目录)
#删除文件
os.remove("oracle.txt") #删除当前目录的文件
os.rename(r"D:\pythonjob\test_01\oracle.txt") #删除指定路径下的文件
目录操作:创建、删除与查看
(3)创建目录(文件夹):os.mkdir()
核心功能:创建一个新的空目录(文件夹)
# 创建空文件夹
os.mkdir("hello1")
os.mkdir(r"D:\pythonjob\test_01\hello2")
(4)删除目录(文件夹):os.rmdir()
核心功能:删除指定的空目录(只能删空目录,目录里有文件/子目录会报错)
#删除文件夹
os.rmdir("hello1")
os.rmdir("hello2")
(5)查看当前工作目录:os.getcwd()
核心功能:获取python脚本当前运行的目录(返回绝对路径)
# 获取当前文件路径
print(os.getcwd())
(6)查看目录内容:os.listdir()
核心功能:获取指定目录下的所有文件和子目录,但会一个列表(元素是文件名/目录名)
#查看目录内容
print(os.listdir())
print(os.listdir(r"D:\pythonjob"))
路径检验:判断文件/目录是否存在
(7)检验路径是否存在:os.path.exists()
核心功能:判断指定路径(文件或目录)是否存在,返回True(存在)或False(不存在)
# 判断文件或者目录是否存在
print(os.path.exists("oracle.txt"))
print(os.path.exists(r"D:\pythonjob\test_01"))
(8)检验是否为目录
核心功能:判断路径是否存在,且是一个目录(返回True/False)
# 判断目录是否存在
print(os.path.isdir("oracle.txt"))
print(os.path.isdir(r"D:\pythonjob\test_01"))
571



被折叠的 条评论
为什么被折叠?



