![ba7a135258ac8e3ca8b4653ebe7796ee.png](https://i-blog.csdnimg.cn/blog_migrate/99fbd6ad15676f053f28942b2ddeca99.jpeg)
文件与目录操作
读文件
In [26]:
# 要以读文件的模式打开一个文件对象,使用Python内置的`open()`函数,传入文件名和标示符:f = open('print_str.py', 'r')# 如果文件打开成功,接下来,调用read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示:f.read()# 最后一步是调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源f.close()
Out[26]:
'print("欢迎大家学习课程内容!")'
In [ ]:
# 异常处理模式try: f = open('/path/to/file', 'r') print(f.read())except Exception as e: print efinally: if f: f.close()
In [30]:
# 逐行读取with open('test.py', 'r') as f: for line in f.readlines(): print(line.strip())
for item in range(100):print(item)
写文件
In [33]:
with open('test.txt', 'w') as f: f.write('Hello, world!') f.write('new line')
Out[33]:
14
Out[33]:
8
In [35]:
lines = ['Hello, python!', 'New text!']with open('new.txt', 'w') as f: f.writelines(lines)
目录操作
In [37]:
# 需要用到os内置模块import os# 列举当前绝对路径os.path.abspath('.')# 新建文件夹os.mkdir('./testdir')# 文件重命名os.rename('test.txt', 'test2.txt')# 列出当前路径下的所有文件夹[x for x in os.listdir('.') if os.path.isdir(x)]# 列出当前路径下的所有python脚本文件[x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
Out[37]:
'/Users/mm/Documents/mm/mm/python_skills'
Out[37]:
['.ipynb_checkpoints', 'testdir']
Out[37]:
['print_str.py', 'test.py']
面向对象
面向对象编程
- 类class与对象object对属于同一类事物的抽象叫类class比如汽车,蛋糕,猫。 之前学习使用的都是Python自带的数据类,这节课我们学习自己定义类class某类事物中的一个具体的实例叫对象Object比如小区门口的那辆黑色的奥迪汽车,好利来里的那种奶油芝士蛋糕,隔壁小花家的那只小花猫。
- 类与对象的关系类定义封装了数据与方法,类就是对象的模板,可以批量生产出许多的对象。比如a=7,7其实是整形数字int类的一个实例。那int这个类还可以’复刻’出许许多多的整形对象。这些对象共有的特征就是:整数性。类(class)的变量是所有对象共享使用, 只有一个拷贝, 所有对象修改, 都可以被其他对象所见; 对象(object)的变量由类的每个对象所拥有, 每个对象都包含自己的一份拷贝, 不会影响其他对象;
In [15]:
# 类的设计与创建# 使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾,类的主体由类成员,方法,数据属性组成class Employee: "所有员工的基类" empCount = 0 def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1 def displayCount(self): print("总共雇员数量 %d" % Employee.empCount) def displayEmployee(self): print("姓名: ", self.name, ", 工资: ", self.salary) # empCount 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问。# 第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法# self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。
In [16]:
# 创建对象"创建 Employee 类的第一个对象"emp1 = Employee("张三", 2000)"创建 Employee 类的第二个对象"emp2 = Employee("李四", 5000)
In [17]:
# 调用成员函数emp1.displayEmployee()emp2.displayEmployee()print("总共雇员数%d" % Employee.empCount)
姓名: 张三 , 工资: 2000姓名: 李四 , 工资: 5000总共雇员数2
In [19]:
#__dict__ : 类的属性(包含一个字典,由类的数据属性组成)#__doc__ :类的文档字符串#__name__: 类名#__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)#__bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)print("Employee.__doc__:", Employee.__doc__)print("Employee.__name__:", Employee.__name__)print("Employee.__module__:", Employee.__module__)print("Employee.__bases__:", Employee.__bases__)print("Employee.__dict__:", Employee.__dict__)
Employee.__doc__: 所有员工的基类Employee.__name__: EmployeeEmployee.__module__: __main__Employee.__bases__: (,)Employee.__dict__: {'__module__': '__main__', '__doc__': '所有员工的基类', 'empCount': 2, '__init__': , 'displayCount': , 'displayEmployee': , '__dict__': , '__weakref__': }
第三方库使用
python比较强大的地方之一,是有着非常活跃的社区和强大的第三方库,很多时候你需要做的事情可以借助标准库或者第三方库快速完成。
第三方库——Python Imaging Library,这是Python下非常强大的处理图像的工具库。一般来说,第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索,比如Python Imaging Library的名称叫pillow,因此,安装Python Imaging Library的命令就是:
In [42]:
!pip install pillow
Requirement already satisfied: pillow in /usr/local/lib/python3.6/site-packages (5.2.0)You are using pip version 10.0.1, however version 19.0.3 is available.You should consider upgrading via the 'pip install --upgrade pip' command.
In [44]:
from PIL import Imageim = Image.open('../img/python.png')print(im.format, im.size, im.mode)im.show() #本地会跳出一个弹窗显示图片im.thumbnail((400, 100)) #对图片进行resizeim.save('python.jpg', 'JPEG') #存储图片
JPEG (1870, 434) RGB