第七章、文件操作

7.1文件的基本操作

7.1.1打开文件

调用open()打开文件并返回文件对象:
该函数第一个参数是传入的文件名,如果只有文件名,不带路径的话,就会在当前文件夹中去查找该文件;第二个参数指定文件打开模式。
r:只读(默认),w只写,会覆盖,x文件已存在,打开就会引发异常。a在末尾写入,b二进制打开,t文本模式打开,+可读写模式,u通用换行符支持。
f=open(“record.txt”,‘r’)

7.1.2文件对象的方法

close():关闭文件。
read(size==-1):从文件中读取size个字符,如果没指定或者指定负值,读取剩下所有字符并返回该字符串。
readline():以写入模式打开,若文件存在,就从末尾写入。
write(str):将字符串str写入文件
writeline():向文件写入字符串序列,该序列应该是一个返回字符串的可迭代对象
seek(offset,from):从文件中移动文件指针,从from偏移offset个字节。from为0表示起始位置,1表示当前位置,2表示文件末尾。
tell():返回当前文件的位置

7.1.3文件的关闭

close()方法用于文件的关闭,忘记关闭文件不会再成内存泄漏的危险。但是用完文件,一定记得关闭。

7.1.4文件的读取和定位

在p5源文件的当前目录下添加record.txt文件。

发现中文没有准确读出来。
因为一个中文占两个字节空间,所以当前位置为23+12*2

readline()方法用于文件中读取一整行,遇到换行符结束。
也可以把文件的内容放到列表中:
list(f)

也可以把文件里面的内容迭代读取出来:
f.seek(0,0)
for each in f:
print(each)

7.1.5文件的写入

如果要写入文件,确保之前打开模式有‘w’,‘a’,否则会出错。


如果想要在原来的内容上面追加,一定要用’a’模式。

7.2文件系统

模块:我们写的每一个源代码文件(*.py)都是一个模块。
用random模块的randint()函数来生成随机数。

正确的做法先使用import语句导入模块,然后再使用:

Python是跨平台语言,同样的源代码在不同的操作系统上面不需要修改就可以同样实现。有了OS模块,就会帮助选择正确的操作系统模块。OS模块中关于文件/目录常用的函数使用方法.

getcwd():获得应用程序当前的工作目录。

chdir(path)
用来改变当前工作目录,将当前工作目录切换到E盘:
os.chdir(“E:\”)

listdir(path=’.’)
用来看指定目录下有哪些文件和子目录

mkdir(path)
在指定目录下创建文件夹,默认情况下是在当前目录下建立文件夹。如果文件夹存在,就会抛出异常。

makedirs(path)
用于创建多层目录,例如在当前目录下创建多层目录:
os.makedirs(r".\a\b\c")

remove(path):在指定目录下删除文件,而不是删除目录。
rmdir(path):删除指定目录
removedirs(path):删除多层目录。

rename(old,new)
用于重命名文件或者文件夹。
os.rename(“a.txt”,“b.txt”)

system(command)
使用操作系统提供的小工具。
os.system(“calc”)
回车后就可以弹出计算器

walk(top)
遍历top参数指定路径下的所有子目录,并将结果返回一个三元组(路径,[包含目录],[包含文件])

os.curdir表示当前目录;os.pardir表示上一级目录;os.linesep表示当前平台使用的终止符;os.sep表示路径的分隔符;os.name表示当前使用的操作系统。

另一个强大的模块是os.path
basename(path):用于获取文件名,dirname(path):用于获取路径名。
os.path.dirname(r"a\b\testt.txt")
‘a\b’
os.path.basename(r"a\b\test.txt")
‘text.txt’

join()
用于将路径名和文件名组合成一个完整的路径:
os.path.join(r"C:\Python34\Test",“FishC.txt”)
‘C:\Python34\Test\FishC.txt’

split(path):分割路径和文件名。
splitext(path):用于分割文件名和扩展名
os.path.split(r"a\b\text.txt")
(‘a\b’,‘text.txt’)
os.path.splitext(r"a\b\text.txt")
(‘a\b\text’,‘txt’)

getsize(file)
用于获取文件的尺寸,返回值是以字节为单位。
os.path.getsize(“python.exe”)

8.3pickle模块

它几乎可以把所有Python对象都转化为二进制的形式存放。

运行程序,当前目录下也出现了这个文件,这里使用了dump方法来保存数据。当用记事本打开时候会显示乱码,所以这里需要用二进制模式先把文件打开,然后用load把数据加载进来。

第八章、异常处理

8.1常见异常种类

  1. AssertionError异常,assert关键字后边的条件为假时候,会出现该异常。
  2. AttributeError异常,当试图访问的对象属性不存在时抛出的异常。
  3. IndexError异常,索引超出序列的范围。
  4. KeyError:字典中查找一个不存在的关键字
  5. NameError:尝试访问一个不存在的变量
  6. OSError:操作系统产生的异常
  7. SyntaxError:Python的语法错误
  8. TypeError:不同类型之间的无效操作
  9. ZeroDivisionError:除数为0

8.2try-expect语句

该语句主要用来捕获异常。

也可以把出错的原因打印出来:
except OSError as reason:
print('文件打开过程出错‘+str(reason))

8.2.1针对不同的异常设置多个expect

8.2.2对多个异常统一处理

8.2.3捕获所有异常

如果无法确定对哪一类异常进行处理:

except:
print('出错了’)

8.3try-finally语句


将上述代码修改为;

try:f=open('record.txt')print(f.read())sum=1+'1'
except TypeError as reason:print('出错原因:'+str(reason))
#该语句的内容是确保无论如何都会执行的内容
finally:f.close()

8.4raise语句

利用代码自己抛出一个异常,抛出的异常还可以带参数,表示异常的解释:
raise ZeroDivisionError(“除数不能为0!”)

else语句可以和异常处理语句结合,如果try语句里面没有异常,就会执行else语句:

try:f=open('record.txt')print(f.read())sum=1+'1'
except TypeError as reason:print('出错原因:'+str(reason))
#该语句的内容是确保无论如何都会执行的内容
finally:f.close()
else:print("没有异常!")

8.5with语句


with会帮你自动关闭文件。

第九章、类和对象

9.1对象

对象=属性+方法

创建一个时钟类:


self跟C++里面this一样,表示当前对象本身。

9.2魔方算法

init()方法称为构造方法:

9.2.1公有和私有

Python默认上的对象的属性和方法都是公开的。
在变量名和函数名前面加__两个下划线,那么这个函数和变量就会成为私有的。

理论上要访问,就需要从内部进行:

实际上在外部使用_类名__变量名即可访问双下划线开头的私有变量:
p._Ball__name

9.3继承


如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性:
在子类中继承父类,就会丧失父类构造函数中构造的成员变量。
介绍两种可以实现的技术:

  • 调用未绑定的父类方法
  • 使用super函数

9.3.1调用未绑定的父类方法

class Shark(Fish):
def init(self):
Fish.init(self)
self.hungery=True
这里的self不是父类Fish的实例对象,而是子类Shark的实例对象。

9.3.2使用super函数

class Shark(Fish):def __init__(self):super().__init__(self)self.hungery=True

super函数可以自动找出相应的基类以及对应的方法。

9.4多重继承

9.5组合

只需要把类放进去实例化就可以。

9.6类、类对象和实例对象

类中定义的属性是静态变量,它与类绑定,并不依赖实例对象。如果属性的名字跟方法名字相同,属性会覆盖方法。

9.7定义类方法中参数,没用到self


根据类实例化的对象根本无法调用里边的函数,这是由于自动把bb对象作为第一个参数传入,所以才会出现TypeError。

__dict__查看对象的所拥有的属性:

这个能成功实现,完全归功于self参数,当实例对象调用setXY方法时候,传入的第一个参数就是dd。所以self.x=4和
self.y=5就相当于dd.x=4和dd.y=5。

如果把类实例删除掉,dd实例对象还能调用printXY方法。因为cc.printXY()会自动把该方法从属于该实例对象

9.8相关的BIF

  1. issubclass(class,classinfo)
    如果第一个参数是第二个参数的一个子类,那么返回True,否则返回False:
  2. isinstance(object,classinfo)
    如果第一个参数是第二个参数的实例对象,则返回True,否则返回False。
  3. hasattr(object,name)
    测试对象里面是否有指定属性,第一个参数是对象,第二个参数是属性名。
  4. getattr(object,name[,default])
    返回对象指定的属性值,如果指定的属性不存在,就返回default的值。如没有default,就会报ArttributeError异常。
    getattr(c1,‘y’,‘你访问的属性不存在’)
  5. setattr(object,name,value)
    设置对象中指定属性的值,如果指定的属性不存在,则会新建属性并赋值。
  6. delattr(object,name)
    用于删除对象中指定的属性,如果属性不存在,就会抛出异常
  7. property(fget=None,fset=None,fdel=None,doc=None)
    通过属性来设置属性:
class C:def __init__(self,size=10):self.size=sizedef getSize(self):return self.sizedef setSize(self,value):self.size=valuedef delSize(self):del self.size#内部属性来设置属性x=property(getSize,setSize,delSize)
c=C()
#获取值
print(c.x)
#赋值
c.x=12
print(c.x)
#删除值
del c.x

10
12

为用户访问size属性,只提供了x属性,无论内部怎么改动,只需要修改property()参数,用户仍然只需要操作x就行。

零基础入门学习Python4相关推荐

  1. 零基础入门学习Python,我与python的第一次亲密接触后的感受!

    前言:Python是适合初学者入门最好的语言 Python适合初学者入门最好的语言 人工智能用Python?高考要加入Python?现在连微软官方Excel都要把Python作为官方语言!Python ...

  2. 零基础入门学习Python(33)-图形用户界面编程(GUI编程)EasyGui

    用户界面编程,即平时说的GUI(Graphical User Interface)编程,那些带有按钮.文本.输入框的窗口的编程 EasyGui是一个非常简单的GUI模块,一旦导入EasyGui模块,P ...

  3. python零基础入门教程视频下载-Python零基础入门学习视频教程全42集,资源教程下载...

    课程名称 Python零基础入门学习视频教程全42集,资源教程下载 课程目录 001我和Python的第一次亲密接触 002用Python设计第一个游戏 003小插曲之变量和字符串 004改进我们的小 ...

  4. python基础教程视频教程百度云-Python零基础入门学习视频教程全42集百度云网盘下载...

    课程简介 Python零基础入门学习视频教程全42集百度云网盘下载 课程目录 042魔法方法:算术运算 041魔法方法:构造和析构 040类和对象:一些相关的BIF 039类和对象拾遗 038类和对象 ...

  5. 零基础入门学python 第二版-《零基础入门学习Python》第二版和第一版的区别在哪里呢?...

    第一版 时光荏苒,一晃间,距离<零基础入门学习 Python>出版(2016年11月)已经过去两年多了,在这段时间里, Python 逐步走入了大家的视野,这门语言因其简洁的语法风格,在云 ...

  6. 0基础学python难吗-零基础入门学习Python技术难不难?

    原标题:零基础入门学习Python技术难不难? 近几年对python人才爆发式需求,导致很多人转行进入python开发行业,现如今Python这门语言的就业前景会非常好.相对于其他来说,它语法简单易读 ...

  7. 零基础python必背代码-零基础入门学习python 96集全

    零基础入门学习python 96集全 第000讲 愉快的开始(视频+课件)xa0 第001讲 我和Python第一次亲密接触(视频+课件)xa0 第002讲 用Python设第一个游戏(视频+课件+源 ...

  8. 零基础自学python教程-零基础入门学习Python_Python教程

    教程名称:零基础入门学习Python 课程目录: [易源码www.pnp8.com]000愉快的开始 [易源码www.pnp8.com]001我和Python的第一次亲密接触 [易源码www.pnp8 ...

  9. 圆方圆学院零基础入门学习Python(绝对干货,值得学习)

    圆方圆学院零基础入门学习Python(绝对干货,值得学习) 链接: pan.baidu.com/s/1Shpd1G8L- 提取码: bup7

  10. python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承

    注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 本文字数约1300,阅读时间约为3分钟. Python面向对象编程 类的继承机制 如果一个类A继承自另一个类B,就把继承者类A称 ...

最新文章

  1. 酒店中计算机信息应用的重要性,浅析计算机在酒店管理中所体现的应用价值
  2. 开课吧python学费-开课吧成为CNCC中国计算机大会唯一教育合作伙伴
  3. 基于visual Studio2013解决C语言竞赛题之0502最小数替换
  4. 数据结构——从叶子结点到根节点的全部路径
  5. 实用技巧:使用 Google Analytics 跟踪 JS 错误
  6. 设置clion执行前的cmake命令,和CMAKELIST.txt不冲突
  7. UIAUTOMATOR
  8. PollingBlockTracker - encountered an error while attempting to update latest block:
  9. 团队项目第一阶段站立会议01
  10. 【研发设计】多人开发模式下的Git工作流介绍
  11. 某热门单击手游lua解密.md
  12. maven实现对js文件进行变量替换和文件压缩
  13. vscode ssh连接服务器报错:过程试图写入的管道不存在
  14. CICD之 gitlab和gtilab runner
  15. for...in 和 for...of
  16. 思科——通往新商道的金桥
  17. 美团是用html开发,剖析美团网站前端的组件化开发经验
  18. Object.assign详解
  19. redis-集群安装
  20. Introduction to Linear Optimization 2.2 极点,顶角与基可行解

热门文章

  1. photoshop设置A4纸张大小
  2. 微信公众号引流的平台有哪些?
  3. 对称多项式的牛顿公式即等幂和用初等多项式表示和证明
  4. 单维度量表验证性因子分析_探索性因子分析(EFA)和验证性因子分析(CFA)
  5. 【vue】生成条形码
  6. 代码背景护眼色设置RGB
  7. 带你实战Android深色模式,深入原理剖析
  8. Google Earth Engine谷歌地球引擎GEE栅格数据图层可视化设置代码嵌入
  9. 数据库mysql项目实战 一
  10. 双系统如何卸载linux