网站建设 金手指排名霸屏,怎么注册子公司流程,wordpress 路由404,昆明网站搭建公司文件#xff1a;
打开文件使用open函数#xff0c;open()的第一个参数是#xff1a;要打开文件的路径#xff0c;如果只传入文件名那么将在当前文件下查找文件并打开。第二个参数是#xff1a;文件的打开模式#xff0c;其他参数都是默认的。文件的打开模式如下图所示
打开文件使用open函数open()的第一个参数是要打开文件的路径如果只传入文件名那么将在当前文件下查找文件并打开。第二个参数是文件的打开模式其他参数都是默认的。文件的打开模式如下图所示 fopen(C:\\Users\\Lenovo\\Desktop\\test.txt,r)
f#这个f是文件对象
_io.TextIOWrapper nameC:\\Users\\Lenovo\\Desktop\\test.txt moder encodingcp936
#这里name是取自的路径mode是打开的模式encoding是编码格式文件的读取操作
需要用到以下几个文件对象方法
fopen(C:\\Users\\Lenovo\\Desktop\\test.txt,rt,encodingutf-8)
以只读文本模式打开文件编码是utf-8
str3f.read()
str3
年后ijrgwingjnvjnjfdnv困难克服斯诺克女可男可女开心呢可能可男可女可能可男可女 可能发生空空死你女那oadnfkln
f.tell()
144#文件光标的位置打开开文件时光标在文件头进行读取操作后光标会发生移动
f.seek(0,0)
0#将光标移动到文件的头
f.close()#关闭文件fopen(C:\\Users\\Lenovo\\Desktop\\test2.txt,w,encodingutf-8)
str4这是一个新文件
f.write(str4)#返回写入文件的字节数
7
f.close()
#写完后关闭后才会写入不关闭存在缓冲区里面想要将文件里的内容迭代输出的话可以使用for循环
方法一先将文件对象转化为序列再输出
for each in list(b):print(each)这是一个新文件这是一个新文件这是一个新文件这是一个新文件这是一个新文件方法二直接对文件对象进行操作推荐使用
for each in b:print(each)这是一个新文件这是一个新文件这是一个新文件这是一个新文件这是一个新文件模块
模块就是可用代码段的打包模块是一个包含你所定义的所有函数和变量的文件后缀是.py。模块可以被别的程序引入以使用该模块中的函数等功能。我们所知道常用的操作系统就有Windows、Mac OS、Linux、UNIX等这些操作系统底层对于文件系统的访问工作原理是不一样的因此你可能就要针对不同的操作系统来考虑使用哪些文件系统模块这样的做法非常不友好且麻烦因为这样意味着当你的程序运行环境一改变你就要相应的去修改大量代码来应付。那么有了OS模块我们不需要关心什么操作系统下使用什么模块OS模块会帮助你选择正确的模块并调用。
os模块中关于文件/目录常用的函数使用方法
pickle模块
这个模块几乎可以将prthon的对象转化为二进制的形式取放字节流。 存放picking读取unpickingpickle模块的使用
my_list[123,123,[hello,3.14]]
my_list
[123, 123, [hello, 3.14]]
pick_fileopen(C:\\Users\\Lenovo\\Desktop\\,wb)#注意要使用wb的方式创建文件
pickle.dump(my_list,pick_file)#将列表以二进制的方式存入到文件中
pick_file.close()#关闭该文件只有关闭后才会保存到文件中去如果要读取的话
pick_fileopen(C:\\Users\\Lenovo\\Desktop\\test.pkl,rb)#先将文件以二进制可读的方式打开
my_list2pickle.load(pick_file)#文件利用load读取到my_list2列表
my_list2
[123, 123, [hello, 3.14]]异常处理
Python标准异常总结
AssertionError 断言语句assert失败AttributeError 尝试访问未知的对象属性EOFError 用户输入文件末尾标志EOFCtrldFloatingPointError 浮点计算错误GeneratorExit generator.close()方法被调用的时候ImportError 导入模块失败的时候IndexError 索引超出序列的范围KeyError 字典中查找一个不存在的关键字KeyboardInterrupt 用户输入中断键CtrlcMemoryError 内存溢出可通过删除对象释放内存NameError 尝试访问一个不存在的变量NotImplementedError 尚未实现的方法OSError 操作系统产生的异常例如打开一个不存在的文件OverflowError 数值运算超出最大限制ReferenceError 弱引用weak reference试图访问一个已经被垃圾回收机制回收了的对象RuntimeError 一般的运行时错误StopIteration 迭代器没有更多的值SyntaxError Python的语法错误IndentationError 缩进错误TabError Tab和空格混合使用SystemError Python编译器系统错误SystemExit Python编译器进程被关闭TypeError 不同类型间的无效操作UnboundLocalError 访问一个未初始化的本地变量NameError的子类UnicodeError Unicode相关的错误ValueError的子类UnicodeEncodeError Unicode编码时的错误UnicodeError的子类UnicodeDecodeError Unicode解码时的错误UnicodeError的子类UnicodeTranslateError Unicode转换时的错误UnicodeError的子类ValueError 传入无效的参数ZeroDivisionError 除数为零
程序运行过程中可能会抛出某些异常但是这些异常不会使程序崩溃。那么如何检测和处理这些异常呢
异常的检测可以使用try语句try语句捕获到异常时异常后面的语句将不会被执行会被跳过。 栗子
try:fopen(hhhh.txt)print(f.read())f.close()
except OSError:print(文件出错)如果使用as reason这个可选的参数
try:fopen(hhhh.txt)print(f.read())f.close()
except OSError as reason:print(文件出错\n错误的原因是:str(reason))文件出错
错误的原因是:[Errno 2] No such file or directory: hhhh.txt要捕获多个异常try语句捕获到异常时异常后面的语句将不会被执行会被跳过所以第二个异常没有被打印
try:sum11fopen(hhhh.txt)print(f.read())f.close()
except OSError as reason:print(文件出错\n错误的原因是:str(reason))
except TypeError as reason:print(类型出错\n错误的原因是:str(reason))类型出错
错误的原因是:unsupported operand type(s) for : int and str以下方式可以检测多个异常
try:sum11fopen(hhhh.txt)print(f.read())f.close()
except (OSError,TypeError):print(出错)如果想只要程序中出现异常不管是什么类型的都有提示可以这样做不推荐
try:sum11fopen(hhhh.txt)print(f.read())f.close()
except:print(出错)另一个实现方式
栗子
try:fopen(C:\\Users\\Lenovo\\Desktop\\hhhh.txt,w)sum11f.close()
except (OSError,TypeError):print(出错)
finally:#这里面的语句无论如何都会被执行f.close()#防止因异常退出而文件没有被关闭而导致数据丢失可以使用raise语句自己引发一个异常只需要在raise后面加上一个异常的名称就好。例如raise ZeroDivisionError引发除0异常。也可以raise ZeroDivisionError(除数为0)
丰富的else语句 else语句可以和if语句配合使用要么怎样要么不怎样。还可以和while、for循环语句搭配使用干完了能怎样干不完就别想怎样。还能和异常处理语句搭配使用没有问题就干吧。
当else和循环配合使用的话如果循环里面的代码正常的执行完没有使用break等退出则会执行循环外else后面的代码。
while:正常退出
else:这里会被执行否则不被执行只要try语句块里面没有出现任何的异常将会执行else里面的语句
try:int(abc)
except ValueError as reason:print(出错了str(reason))
else:print(没有任何异常)简洁的with语句 with在你使用完文件忘记关闭后with语句就会帮助你关闭。
try:with open(hhhh.txt)as fd:#fd是文件标签print(f.read())#注意代码的缩进with下面要将代码缩进
except OSError as reason:print(文件出错\n错误的原因是:str(reason))对象 对象就是属性加方法静态的特征称为属性动态行为称为方法。在pyhton中约定类名以大写字母开头函数以小写字母开头注意 如果属性的名字和方法相同属性会将方法覆盖掉。那么1、不要试图在一个类里面定义出所有能想到的特性和方法应该利用继承和组合机制进行扩展。2、用不同的词性命名如属性用名词方法名用动词。
类的定义
class Turtle:#属性colorgreenweight10#方法def climb(self):#self相当于C的this指针在python中定义类的时候默认self作为第一个参数print(爬行)tTurtle()#生成类对象,创建类的实例对象
t.climb()#适用类方法继承
是子类自动共享父类之间数据和方法的机制子类继承父类所有的属性和方法如果子类中定义与父类同名的方法或属性则会自动覆盖父类对应的方法或属性对父类不受影响当子类重写父类的构造方法时如果还想有父类的功能那么有两种方法1、调用未绑定的父类方法只需要在子类构造方法中写上父类的名字.构造方法名称调用父类的构造函数即可2、使用super函数只需要在子类构造方法中通过super函数调用父类的构造方法即可surper().__init__(),括号里面self也不用写。多重继承 一个子类继承多个父类写法class Son(father1,father2,.....)
class MyList (list):pass
#pass表示占位符表示不做任何事情list表示继承list class Parent:def hello(self):print(父类方法在子类中被调用) class Son(Parent):pass dSon()d.hello()
父类方法在子类中被调用 class Son(Parent):def hello(self):print(子类覆盖父类方法) CSon()C.hello()
子类覆盖父类方法多态 不同对象对同一方法响应不同的行动。也就是不同类里面定义方法的名相同但是方法的内容不同。 class First:def func(self):print(hello) class Second:def func(self):print(你好) aFirst()a.func()
hellobSecond()b.funcb.func()
你好构造函数 需要用到函数_ _init_ _(self)方法在对象实例化时传入参数可以重写_ _init_ _(self)方法来初始化对对象的操作。
class New:def _init_(self,name):self.namenamedef func(self):print(%s爬%self.name)bNew(给我)b.func()
给我爬公有和私有
在pyhton中没有像c一样的关键字来说明公有还是私有。默认对象的属性和方法都是公有的可以通过.操作符访问为了实现私有变量的特征python内部采用了name mangling名字改编名字重整技术在python中定义私有变量只需要在变量名或者函数名前加上_ _两个下划线那么这个函数或变量就会为私有的了。这样外部就无法访问到了。 class New:__name小鱼酱#私有的def func(self):return self.__name aNew()a.func()
小鱼酱a._New__name#其实python的私有机制是伪私有可以通过这种方式访问私有变量
小鱼酱组合把类的实例化给放到新类里面这样就把旧类组合进去了
class Turtle:def __init__(self,x):self.numx
class Fish:def __init__(self,x):self.numx
class Pool:def __init__(self,x,y):self.turtleTurtle(x)#turtle是乌龟的实例化对象self.fishFish(y)#fish是小鱼的实例化对象def print_num(self):print(水池里总共乌龟有%d只小鱼%d只% (self.turtle.num,self.fish.num)) poolPool(1,10)pool.print_num()
水池里总共乌龟有1只小鱼10只什么是绑定 python严格要求方法需要有实例才能被调用这种限制其实就是python所谓的绑定概念。
一些与类相关的BIF
issubclass(class,classinfo)如果class是classinfo的一个子类那么返回True注意一个类被认为是其自身的子类classinfo可以是类对象组成的元组只要class是其中任何一个候选的子类则返回True。所有类默认继承自object。isinstance(object,classinfo)用来检查一个实例对象是否属于一个类第一个参数是实例对象第二个参数类同样第二个参数也可以是元组元组里面有多个类属于则返回True否则返回Falsehasattr(object,name)用来测试一个对象里面是否有指定的属性第一个参数是对象第二个参数是指定的属性名注意要检查的属性名要用字符串括起来否则编译器会将其认为变量可能引发异常。getattr(object,name[,default])用来返回对象指定的属性值如果属性不存在同时又没有设置default的值那么她会抛出异常如果有设置default的值则会打印default的值。setattr(object,name,value)用来设置对象中指定属性的值如果属性不存在它会新建这个属性并且给他赋值属性同样要加单引号。delattr(object,name)用来删除对象中指定的属性如果属性不存在则抛出异常。property(fgetNone,fsetNone,fdelNone,docNone)是用来通过属性设置属性返回值是一个属性。第一个参数是获得属性的方法第二个参数是设置属性的方法第三个参数是删除属性的方法。使用如下图 小甲鱼干货