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 相关文章推荐
Python3.x中自定义比较函数
Apr 24 Python
Python3通过Luhn算法快速验证信用卡卡号的方法
May 14 Python
python图像处理之镜像实现方法
May 30 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
Python程序打包工具py2exe和PyInstaller详解
Jun 28 Python
python绘制BA无标度网络示例代码
Nov 21 Python
python+opencv3生成一个自定义纯色图教程
Feb 19 Python
利用Python批量识别电子账单数据的方法
Feb 08 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
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
js如何判断不同系统的浏览器类型
2013/10/28 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
JS获取本周周一,周末及获取任意时间的周一周末功能示例
2017/02/09 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
详解angularjs跨页面传参遇到的一些问题
2018/11/01 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
Python中的True,False条件判断实例分析
2015/01/12 Python
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
python使用RNN实现文本分类
2018/05/24 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
python tornado修改log输出方式
2019/11/18 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
校长岗位职责
2013/11/26 职场文书
连带责任保证书
2014/04/29 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
售后服务承诺函格式
2015/01/21 职场文书
2015年数学教研工作总结
2015/07/22 职场文书
简单介绍Python的第三方库yaml
2021/06/18 Python
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL