Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改
这一部分分三个主题进行讲解,主要为后面的模块、包、第三方库的概念补充一些相关的内容。
1. 路径(Path):
相对路径和绝对路径。
举例1:我们先导入一个os库(模块)来观察一下路径
import os
# 绝对路径
print(os.path.abspath(".")) # 表示当前所处的文件夹的绝对路径
print(os.path.abspath("..")) # 表示当前所处的文件夹上一级文件夹的绝对路径
# 返回值:
# F:\QUANT\练习
# F:\QUANT # 相对路径:
open('aaa.txt')
open('/data/bbb.txt')
其实从这里我们就一定很好理解了,绝对路径就是完整的一个路径表示方式,相对路径就是相对于绝对路径而言的路径。
在这里其实我们发现我们已经用了import os这样一个模块的导入,这是后面要讲的内容,其实我们在之前的学习中用到了这种模式我们记住这个模式,然后用这个模块给的方法对路径进行详细的学习一下。
备注:"." 点,这个概念在面向对象的学习中非常的重要。可以点方法可以点属性,何为方法属性我们在第三篇会进行讲解,在这里记录我们.是点一个动作出来即可。
举例2:获取操作系统的类型:
# 获取操作系统的类型 nt--windows, posix--Linux、Unix, MAC OS X
print(os.name)
# 返回值:nt
举例3:打印系统的详细信息
# 注意windows不支持,打印系统的详细信息
print(os.uname())
举例4:获取系统的环境变量
# 获取操作系统的环境变量
print(os.environ)
# 返回值:
# environ({'内容略'})
举例5:获取指定环境变量的路径
# 获取指定环境变量
print(os.environ.get("APPDATA"))
# 返回值:C:\Users\Thomas\AppData\Roaming
举例6:获取目录
# 获得当前目录
print(os.curdir)
# 返回值. 表示上一级
举例7:获取当前工作目录,即当前Python脚步文件所在的目录
# 获取当前工作目录,即当前python脚本所在的目录
print(os.getcwd())
# 返回值:F:\QUANT\练习
举例8:返回指定目录下的所有文件,以列表形式返回。重要!
# 返回指定目录下的所有文件,以列表的形式返回
print(os.listdir(r"F:\QUANT\练习"))
# 返回值:
# ['.idea', '123.txt', 'eighth.py', 'fifth.py' ]
举例9:在当前目录下创建新目录
# 在当前目录下创建新目录
# os.mkdir(r"F:\QUANT\练习\kaige.txt") # 绝对路径
# os.mkdir("kaige.txt") # 相对路径
举例10:删除当前目录下创建文件
# 删除当前目录下创建文件
# os.rmdir(r"F:\QUANT\练习\kaige.txt")
举例11:获取文件属性(stat = statement)
# 获取文件属性
print(os.stat("咏梅.txt"))
# 返回值:
# os.stat_result(st_mode=, st_ino=, st_dev=, st_nlink=, st_uid=,
# st_gid=, st_size=, st_atime=, st_mtime=, st_ctime=)
举例12:重命名
# 重命名
os.rename("咏梅","Thomas")
举例13:删除普通文件
# 删除普通文件
os.remove("file1")
举例14:运行shell命令
# 运行shell命令
# os.system("notepad") # 记事本
# os.system("write") # 写字板
# os.system("mspaint") # 画图
# os.system("msconfig") # msconfig
# os.system("shutdown -s -t 500") # 定时关机
# os.system("shutdown -a") # 取消关机
# os.system("taskkill /f /im notepad.ext") # 关闭软件
举例15:查看绝对路径
# 路径方法:
# 查看当前的绝对路径
print(os.path.abspath("./咏梅.txt"))
举例16:拼接路径,重要!
# 拼接路径
p1 = r"F:\QUANT\练习"
p2 = "sunck" # 注意后面的路径前面不要有参数,或者加上r也可以
# p2 = r"\sucnk"
print(os.path.join(p1,p2))
# 返回值:F:\QUANT\练习\sunck
举例17:拆分路径,重要!
# 拆分路径
p3 = r"F:\QUANT\练习"
print(os.path.split(p3)) # 拆分成元组,把最后的文件名拆分
p4 = r"F:\QUANT\练习\咏梅.txt"
print(os.path.splitext(p4)) # 拆分成元组,把最后的文件名拆分和扩展名
# 返回值:
# ('F:\\QUANT', '练习')
# ('F:\\QUANT\\练习\\咏梅', '.txt') # 包含一个扩展名,最后一个
举例18:判断是否是目录、判断文件是否存在、判断目录中是否存在文件,重要!
# 判断是否是目录
p5 = r"F:\QUANT\咏梅.txt"
print(os.path.isdir(p5))
# 判断文件是否存在
p6 = "咏梅.txt" # 相对路径绝对路径
print(os.path.isfile(p6)) # 判断目录中是否存在文件
p7 = r"F:\QUANT"
print(os.path.exists(p7))
举例19:获取文件大小(字节)
# 获取文件大小(字节)
p8 = "咏梅.txt"
print(os.path.getsize(p8))
# 返回值:
举例20:获取文件目录、获取目录下的文件名
# 获取文件目录
p9 = r"F:\QUANT\咏梅.txt"
print(os.path.dirname(p9))
# 返回值:F:\QUANT # 获取目录下的文件名
p10 = r"F:\QUANT\咏梅.txt"
print(os.path.basename(p10))
# 返回值:咏梅.txt
2. 栈和队列
关于栈这部分的详细解释参考第一篇的关于内存的详解,里面关于栈说的很清楚。
在之前接触栈的学习时候我们知道栈像是一个堵死的管道,只能后进来的先出去,这里我们引入了一个队列的概念,就是我们把这条管道打开,形成一个通路,这样我们就有了两个概念了。
栈:先进后出,FILO
队列:FIFO
为什么要学习这部分内容,这部分主要是为了平时对于目录遍历和对存储数据文件操作常用的两种操作思路。
2.1 模拟栈的结构(列表就是这么一个过程)
举例21:模拟战栈的结构
# 模拟栈结构
stack = [] # 压栈(向栈里存数据)
stack.append("A")
print(stack)
stack.append("B")
print(stack)
stack.append("C")
print(stack) # 出栈(在栈里取数据)
stack.pop()
print(stack)
stack.pop()
print(stack)
stack.pop()
print(stack) # 返回值
# 压栈过程:
# ['A']
# ['A', 'B']
# ['A', 'B', 'C'] # 出栈过程
# ['A', 'B']
# ['A']
# []
举例22:模拟队列的结构
# 模拟队列结构
import collections
queue = collections.deque()
print(queue) # 进队(存数据)
queue.append("A")
print(queue)
queue.append("B")
print(queue)
queue.append("C")
print(queue) # 出队(取数据)
res1 = queue.popleft()
print("res1 = ",res1)
print(queue)
res2 = queue.popleft()
print("res2 = ",res2)
print(queue)
res3 = queue.popleft()
print("res3 = ",res3)
print(queue) # 从这个过程我们看到了FIFO的过程
# 进队
# deque([])
# deque(['A'])
# deque(['A', 'B'])
# deque(['A', 'B', 'C']) # 出队
# res1 = A
# deque(['B', 'C'])
# res2 = B
# deque(['C'])
# res3 = C
# deque([])
# 其实我们发现了queue.这个方法还有一个pop的方法,就是从右边弹出队列。因为我们现在模拟队列的先进先出的形式。记住这个即可。
3. 内存修改:(略)
Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改的更多相关文章
- Python笔记_第一篇_面向过程_第一部分_2.内存详解
Python的很多教材中并没有讲内存方面的知识,但是内存的知识非常重要,对于计算机工作原理和方便理解编程语言是非常重要的,尤其是小白,因此需要把这一方面加上,能够更加深入的理解编程语言.这里引用了C语 ...
- 四、java基础-面向过程_对象_类中可出现的因素
1.面向过程和面向对象区别: 1)面向过程:开发一个应用程序.一个项目,必须先了解整个过程,了解各个步骤.模块间的因果关系,使的面向过程方式去开发程序时,代码和代码之间的关联程度是非常强.所以其中任何 ...
- python自动化开发-[第五天]-面向过程、模块、包
今日概要: 1.内置模块 2.协程函数 3.递归 4.面向过程编程与函数编程 5.模块 6.包 7.re正则 一.内置模块 1.匿名函数lambda 定义:匿名函数通常是创建了可以被调用的函数,它返回 ...
- python第四周迭代器生成器序列化面向过程递归
第一节装饰器复习和知识储备------------ 第一节装饰器复习和知识储备------------ def wrapper(*args,**kwargs): index(*args,**kwa ...
- [Python笔记]第八篇:模块
本篇主要内容:python常用模块用法介绍 什么是模块 模块,用一大段代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性 ...
- [Python笔记]第三篇:深浅拷贝、函数
本篇主要内容:深浅拷贝,自定义函数,三目运算,lambda表达式, 深浅拷贝 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. import ...
- python之迭代器、生成器、面向过程编程
一 迭代器 一 迭代的概念 #迭代器即迭代的工具,那什么是迭代呢?#迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 while True: #只是单纯地重复,因而不 ...
- python函数之协程与面向过程编程
第一:协程 初步了解协程 def eater(): print('start to eat') while True: food=yield print('is eating food:%s'%foo ...
- python怎么写可读性好的面向过程的长篇代码?
最近接受老代码,mmp的,说是重新运行运行起来,那还不如重写呢,因为有很多毛病,不能直接运行,pep8就不用妄想奢望了,还有包括语法错误问题和内存严重泄露的问题(运行几分钟后python.exe进程达 ...
随机推荐
- [BJDCTF2020]ZJCTF,不过如此
0x00 知识点 本地文件包含伪协议 ?text=php://input //执行 post: I have a dream ?file=php://filter/read/convert.base6 ...
- Vim中的基本操作
Vim中的基本操作 vim介绍.实验知识点.Vim中的六种基本模式 2.1 vim 6种模式介绍 从vi衍生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆.几乎所有的编辑器都会有插入和执 ...
- opencv3.0机器学习算法使用
//随机树分类Ptr<StatModel> lpmlBtnClassify::buildRtreesClassifier(Mat data, Mat responses, int ntra ...
- 使用ansible tasks生成linux巡检报告
一直想做个关于资源巡检的功能,其需求就是通过邮件的形式来查看linux资源的使用情况,超出一定的阈值时高亮显示出来.也有人说啦,这个需求通过监控zabbix, prometheus都能做呀,何必自己重 ...
- JAVAEE 和项目开发(第六课:服务器的安装和目录介绍和闪退解决办法)
课程介绍: 在学习了 HTTP 协议后,我们对浏览器和服务器的交互流程以及规范有了一定程度的认知,并也有了自己的理解.但是不少同学对服务器的概念还是有些模糊的,那么本节课就针对服务器进行介绍,我们一起 ...
- java基础——深拷贝和浅拷贝的区别
浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝. 深拷贝:对基本数据类型进行值传递,对引用数据类型船舰一个新的对象,并复制内容,这是深拷贝.
- python----linux下简单的排序
1.选择排序:把一个数与余下所有的数排序,最小的排到最前面 [root@besttest liyn_test]# cat test.py #! /usr/bin/python a=[,,,] ,len ...
- 新iPhone上市会让富士康迎来新一轮的“用工荒”吗?
新iPhone上市,在接下来的几个月内,中国制造会迎来一段非常忙碌或者说忙乱的日子,之所以说忙碌,是在于苹果的订单量常常大得吓人,而之所以说忙乱,则在于连同富士康.和硕.绿点科技等制造业巨头都可能遭遇 ...
- mysql5.6免安装使用
一.去MYSQL官网下载MYSQL免安装版,由于我的系统是64位的,所以就下载了64位的Mysql版本 http://cdn.mysql.com//Downloads/MySQL-5.6/mysql- ...
- Arduino IIC 主从设备连接通信
目的: 实现Arduino主从设备之间的互相IIC通信,掌握IIC通信协议的使用方法. 器材: Arduino UNO R3 一块 Arduino Nano 三块 面包板 导线 3K ...