python标准库sys和OS的函数使用方法与实例详解


Posted in Python onFebruary 12, 2020

python标准库sys

sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互,如:python解释器。

sys模块的常见函数列表(import sys):

函数 说明
dir(sys) dir()方法查看模块中可用的方法。注意:如果是在编辑器,一定要注意要事先声明代码的编码方式,否则中文会乱码。
sys.argv 实现从程序外部向程序传递参数
sys.exit([arg]) 程序中间的退出,arg=0为正常退出
sys.getdefaultencoding() 获取系统当前编码,一般默认为ascii
sys.setdefaultencoding() 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行
reload(sys), 再执行setdefaultencoding(‘utf8'),将系统编码设置为utf8
sys.getfilesystemencoding() 获取文件系统编码方式,Windows下返回'mbcs',mac下返回'utf-8'
sys.path 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到
sys.platform 获取当前系统平台。
sys.stdin sys.stdoutsys.stderr stdin,stdout,以及stderr变量包含与标准I/O流对应的流对象。如果需要更好地控制输出,而print不能满足要求,它们就是你所需要的。你也可以替换它们,重定向输出和输入到其它设备(device),或者以非标准的方式处理它们。
sys.modules 是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快程序运行的速度。它拥有字典所拥有的一切方法。

python标准库os

os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口。

os模块的常见函数列表(import os):

函数-说明:

os.environ 一个dictionary 包含环境变量的映射关系

os.name 显示当前使用的平台

os.sep 显示当前平台下路径分隔符

os.linesep 给出当前平台使用的行终止符

os.remove(‘filename') 删除一个文件

os.rename(“oldname”,“newname”) 重命名文件

os.getcwd() 显示当前python脚本工作路径

os.chdir(dir) 改变当前目录,注意windows下用到转义

os.listdir(‘dirname') 返回指定目录下的所有文件和目录名

os.makedirs(‘dirname/dirname') 可生成多层递规目录

os.rmdir(‘dirname') 删除单级目录

os.getlogin() 得到用户登录名称

os.getenv(‘key') 得到环境变量配置

os.putenv(‘key') 设置环境变量

os.system() 运行shell命令,注意:这里是打开一个新的shell,运行命令,当命令结束后,关闭shell。

操作举例:

os.mkdir('/tmp/xx'),os.system("echo'hello' > /tmp/xx/a.txt"),os.listdir('/tmp/xx') 

os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt'),os.remove('/tmp/xx/b.txt'),os.rmdir('/tmp/xx')

用python编写一个简单的shell :

#!/usr/bin/python
import os, sys
cmd = sys.stdin.readline();
while cmd:
os.system(cmd);
cmd = sys.stdin.readline();

os.path

函数-说明:

os.path.abspath() 获取绝对路径os.path.abspath(“1.txt”) == os.path.join(os.getcwd(),“1.txt”)

os.path.split() 用于分开一个目录名称中的目录部分和文件名称部分。

os.pardir 表示当前平台下上一级目录的字符 …

os.path.join(path, name) 连接目录和文件名。

os.path.basename(path) 返回文件名

os.path.dirname(path) 返回文件路径

os.path.getctime("/root/1.txt") 返回1.txt的ctime(创建时间)时间戳

os.path.exists(os.getcwd()) 判断文件是否存在

os.path.isfile(os.getcwd()) 判断是否是文件名,1是0否

os.path.isdir(‘c:\Python\temp') 判断是否是目录,1是0否

os.path.islink('/home/111.sql') 是否是符号连接,windows下不可用

os.path.ismout(os.getcwd()) 是否是文件系统安装点,windows下不可用

os.path.samefile(os.getcwd(), ‘/home') 看看两个文件名是不是指的是同一个文件

os.walk() 能够把给定的目录下的所有目录和文件遍历出来。

os.path.walk('/home/huaying', test_fun, “a.c”) 遍历/home/huaying下所有子目录包括本目录,对于每个目录都会调用函数test_fun。

os.walk和os.path.walk的区别

函数声明:os.walk(top, topdown=True,None)

1、参数top表示需要遍历的顶级目录的路径。

2、参数topdown的默认值是“True”表示首先返回顶级目录下的文件,然后再遍历子目录中的文件。当topdown的值为"False"时,表示先遍历子目录中的文件,然后再返回顶级目录下的文件。

3、参数onerror默认值为"None",表示忽略文件遍历时的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。

返回值:函数返回一个元组,含有三个元素。这三个元素分别是:每次遍历的路径名、路径下子目录列表、目录下文件列表。

函数声明:os.path.walk(top, func, arg)

1、参数top表示需要遍历的目录路径。

2、参数func表示回调函数,即对遍历路径进行处理的函数。所谓回调函数,是作为某个函数的参数使用,当某个时间触发时,程序将调用定义好的回调函数处理某个任务。注意:walk的回调函数必须提供三个参数:第1个参数为os.path.walk的参数arg,第2个参数表示目录dirname,第3个参数表示文件列表names。注意:os.path.walk的回调函数中的文件列表不和os.walk()那样将子目录和文件分开,而是混为了一谈,需要在回调函数中判断是文件还是子目录。

3、参数arg是传递给回调函数的元组,为回调函数提供处理参数,arg可以为空。回调函数的第1个参数就是用来接收这个传入的元组的。

过程:以top为根的目录树中的每一个目录(包含top自身,如果它是一个目录),以参数(arg, dirname, names)调用回调函数funct。参数dirname指定访问的目录,参数names列出在目录中的文件(从os.listdir(dirname)中得到)。回调函数可以修改names改变dirname下面访问的目录的设置,例如,避免访问树的某一部分。(由names关联的对象必须在合适的位置被修改,使用del或slice指派。)注意:符号连接到目录不被作为一个子目录处理,并且因此walk()将不访问它们。访问连接的目录必须以os.path.islink(file)和os.path.isdir(file)标识它们,并且必须调用walk()。

区别:os.path.walk()与os.walk()产生的文件名列表并不相同。os.walk()产生目录树下的目录路径和文件路径,而os.path.walk()只产生文件路径(是子目录与文件的混合列表)。

实例:

#coding=utf-8

importos
# 当前平台上一级目录字符..
print(os.path.pardir)
# os.path.abspath(__file__) :绝对路径
# 获取绝对路径(目录加当前文件名)
print(os.path.abspath(__file__))
# os.path.split(os.getcwd()) 用于分开一个目录名称中的目录部分和文件名称部分。
# 获取绝对目录(没有文件名)
print(os.getcwd());
print(os.path.split(os.path.abspath(__file__))[0]) # 目录
print(os.path.dirname(os.path.abspath(__file__)))# 等价于上一句
# 拼接文件目录和文件名
print(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.path.pardir) )
# 获取父目录
# 当前目录的路径名称,即父目录(os.path.dirname():显示当前路径,不会显示当前文件名)
print(os.path.dirname(os.getcwd()));
print(os.path.abspath(os.path.join(os.getcwd(), os.path.pardir)) )

更多关于python标准库sys和OS使用方法请查看下面的相关链接

Python 相关文章推荐
python下MySQLdb用法实例分析
Jun 08 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
Oct 09 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
如何利用python查找电脑文件
Apr 27 Python
Python3中_(下划线)和__(双下划线)的用途和区别
Apr 26 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
Python request操作步骤及代码实例
Apr 13 Python
Python HTMLTestRunner如何下载生成报告
Sep 04 Python
python 基于DDT实现数据驱动测试
Feb 18 Python
python绘图subplots函数使用模板的示例代码
Apr 30 Python
python标准库os库的函数介绍
Feb 12 #Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 #Python
Python django框架开发发布会签到系统(web开发)
Feb 12 #Python
Python计算公交发车时间的完整代码
Feb 12 #Python
详解Django3中直接添加Websockets方式
Feb 12 #Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 #Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 #Python
You might like
在smarty中调用php内置函数的方法
2013/02/07 PHP
PHP闭包实例解析
2014/09/08 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
js判断鼠标左、中、右键哪个被点击的方法
2015/01/27 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
2015/09/18 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
基于Bootstrap的UI扩展 StyleBootstrap
2016/06/17 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
[01:44]Ti10举办地公布
2019/08/25 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
一则python3的简单爬虫代码
2014/05/26 Python
tensorflow识别自己手写数字
2018/03/14 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
Django单元测试工具test client使用详解
2019/08/02 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
python中property和setter装饰器用法
2019/12/19 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
日本最大化妆品和美容产品的综合口碑网站:cosme shopping
2019/08/28 全球购物
护士自我评价范文
2014/01/25 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
运动会报道稿300字
2014/10/02 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书