洗礼灵魂,修炼python(17)--跨平台操作三剑客—os,os.path.sys模块
os
1.作用:
因为客户基本都是使用不同的操作系统,在不同的系统下,要完成一个项目,那必须跨平台操作,而python本来就是一个跨平台的语言,而有了os模块,则不需要在意什么系统。并且os模块是用于文件/目录的操作,在很多时候,我们需要对磁盘上的目录或者文件进行操作,如果手动操作那么就已经违背我们的宗旨了,要开发就整个过程都开发,整个过程都自动化完成,所以,os模块在这里作用很大
2.函数:

老规矩,还是只讲解常用函数:
os.listdir(dirname):列出dirname下的目录和文件
getcwd():获得当前工作目录
curdir:返回当前目录('.')
chdir(dirname):改变工作目录到dirname

mkdir(path):创建单层目录,如该目录已存在抛出异常


makedirs(path):递归创建多层目录,如该目录已存在抛出异常,注意:'E:\\a\\b'和'E:\\a\\c'并不会冲突


- 注意:windows分隔符是双斜线,这个没办法改,Windows就是这么特殊
remove(path):删除文件
1).事先创建一个文件:

2).使用命令:

3).查看:

rmdir(path):删除单层目录,如该目录非空则抛出异常


removedirs(path):递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常



rename(old, new):将文件old重命名为new



system(command):运行系统的shell命令

把弹出cmd窗口手动关闭即可退出
walk(top, topdown=True, onerror=None, followlinks=False):遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])
top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。
topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。
onerror -- 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。
followlinks -- 设置为 true,则通过软链接访问目录

注意:
1.walk是一个生成器
2.必须遵循walk的参数才可以迭代出来
例:


但是里面明明是有文件和文件夹的对吧?这里留个疑问,自行解决
下面的命令支持所有平台,前面已经介绍过,这里单独拿出来提醒一下:
os.curdir:指代当前目录('.')
os.pardir:指代上一级目录('..')
os.sep:输出操作系统特定的路径分隔符(Win下为'\\',Linux下为'/')
os.linesep:当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n')
os.name:指代当前使用的操作系统(包括:'posix', 'nt', 'mac', 'os2', 'ce', 'java')
os.path
1.作用:
os.path模块(不属于os模块,另一个模块,但导入os模块时,os.path模块也被导入进来了,导入os.path,os模块下的函数也可以使用),os和os.path模块结合使用的话很强大
2.函数:

同样的,还是只讲解常用方法:


join(path1[, path2[, ...]]):将path1, path2各部分组合成一个路径名

split(path):分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在

splitext(path):分离文件名与扩展名,返回(f_name, f_extension)元组
- 如果是文件则第二个参数为空
getsize(file):返回指定文件的尺寸,单位是字节,如果file是目录则返回0
getatime(file):返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)




- 有没有觉得这个方法倒还挺有用的?
exists(path):判断指定路径(目录或文件)是否存在
sys
1.作用:
sys模块包含了跟python解析器和环境相关的变量和函数,可以修改一些系统配置
2.函数:

同样的,只讲解常用的函数:
sys.argv:可以得到命令行参数,实现从程序外部向程序传递参数
stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们
- sys.stdin:文件标准输入
- sys.stdout:文件标准输出
- sys.stderr:文件标准错误
sys.platform:获取当前执行环境的平台

sys.path:path是一个目录列表,供Python从中查找第三方扩展模块。在python启动时,根据内建规则、PYTHONPATH变量进行初始化,或者另一个说法:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下(使用sys.paht.append(sub)),就可以在程序中import时正确找到

- 当你使用括号后提示这个错误时,那此方法则不能用括号实例化调用的,直接使用即可
- 导入操作时,默认只在父路径下(即包的路径)的模块内搜索导入,如果需要导入一个其他包的模块,则需要先导入sys模块,添加一个搜索路径即可:

sys.exit(n):退出程序,程序中间的退出,arg=0为正常退出

sys.version:获取Python解释程序的版本信息

sys.maxint:最大的Int值

- 注意没有括号
sys.getdefaulttencoding():获取系统当前编码,一般默认为ascii

sys.setdefaultencoding(sub): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。(见设置系统默认编码 )
sys.getfilesystemencoding():获取文件系统使用编码方式,Windows下返回'mbcs',mac下返回'utf-8'.

sys.setrecursionlimit(sub):sub为一个整形数,此法是修改默认的递归深度,在递归那一章会提到,这个方法很实用
洗礼灵魂,修炼python(17)--跨平台操作三剑客—os,os.path.sys模块的更多相关文章
- Python之路第一课Day5--随堂笔记(模块)
本节课程大纲: 1.模块介绍 2.time &datetime模块 3.random 4.os 5.sys 6.shutil 7.json & picle 8.shelve 9.xml ...
- [转载]python中的sys模块(二)
#!/usr/bin/python # Filename: using_sys.py import sys print 'The command line arguments are:' for i ...
- python的sys模块
Sys模块函数之多,我只能选取自己认为比较实用的一些函数列在此处.借马云找员工的说法,"找最合适的而不是最天才的",这句话,我个人觉得在很多方面都能适应,学习也不在话下.Sys模块 ...
- Python之路【第七篇】:常用模块
一. 模块介绍 1. 什么是模块 在前面的几个章节中我们基本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了. 为此 Python ...
- Python之路【第四篇】:模块
什么是模块: 模块就是一个功能的集合. 模块就和乐高积木差不多,你用这些模块组合出一个模型,然后也可以用这个模块加上其他的模块组合成一个新的模型 模块的种类: 1.内置模块(python自带的比如os ...
- Python学习笔记:import sys模块(argv、path、platform、exit)
sys模块是Python标准库中自带的一个模块. sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与当前程序之外的系统环境交互,如:Pyth ...
- python学习笔记(二十八)日志模块
我们在写程序的时候经常会打一些日志来帮助我们查找问题,这次学习一下logging模块,在python里面如何操作日志.介绍一下logging模块,logging模块就是python里面用来操作日志的模 ...
- Python开发【第五章】:常用模块
一.模块介绍: 1.模块定义 用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质上就是.py结尾python文件 分类:内置模块.开源模块.自定义模块 2.导入模块 本质:导 ...
- python常用sys模块
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.modules.keys() 返回所有已经导入的模块列表 sys.exc_info() 获取当前正在处理的异常类,exc_typ ...
随机推荐
- jvm-垃圾回收gc简介+jvm内存模型简介
gc是jvm自动执行的,自动清除jvm内存垃圾,无须人为干涉,虽然方便了程序员的开发,但同时增加了开发人员对内存的不可控性. 1.jvm内存模型简介 jvm是在计算机系统上又虚拟出来的一个伪计算机系统 ...
- python函数练习——个人信息修改
修改个人信息程序 在一个文件里存多个人的个人信息,如以下 1.输入用户名密码,正确后登录系统 ,打印 1. 修改个人信息 2. 打印个人信息 3. 修改密码 2.每个选项写一个方法 3.登录时输错3次 ...
- 监督学习Supervised Learning
In supervised learning, we are given a data set and already know what our correct output should look ...
- Python:使用基于事件驱动的SAX解析XML
SAX的特点: 是基于事件的 API 在一个比 DOM 低的级别上操作 为您提供比 DOM 更多的控制 几乎总是比 DOM 更有效率 但不幸的是,需要比 DOM 更多的工作 基于对象和基于事件的接口 ...
- Django--模板层template
一 模版简介 你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now ...
- Linux编程 3 (初识bash shell与man查看手册)
一.初识bash shell 1.1 启动 shell GNU bash shell 能提供对Linux系统的交互式访问.通常是在用户登录终端时启动,登录时系统启动shell依赖于用户账户的配置. ...
- [疑难杂症]__点击win10屏幕最上方的边界会莫名其妙打开Internet Explorer浏览器,不胜其烦(2次ps:已解决!!!).
关于问题描述: 每次误点到屏幕上边界会莫名打卡Internet Explorer浏览器(一开始开以为是自带的Edge浏览器,后来在查找相关解决方法的时候才发现并不是同一款浏览器) 这个问题存在好久了, ...
- 使用gitlab, jenkins搭建CI(持续集成)系统(3) -- 根据不同触发条件执行不同的构建任务
前面在jenkins中安装的gitlab hook支持不同的参数,具体可以参考gitlab hook文档https://github.com/jenkinsci/gitlab-hook-plugin# ...
- OpenCV设置保存图像压缩率
OpenCV写入静态图片时,imwrite函数第三个参数可以设置压缩率,默认值为95. cv::Mat inImage= cv::imread("lena.jpg"); vecto ...
- [JZOJ5984] 仙人掌
Description Solution 标算我并不会... 考虑一种根号思想 首先以 \(1\) 为根dfs整棵树 那么在任意时刻一个点的儿子的权值种类最多只会有 \(\sqrt m\) 种. 可以 ...