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实现购物程序思路及代码
Jul 24 Python
Python3 操作符重载方法示例
Nov 23 Python
python脚本作为Windows服务启动代码详解
Feb 11 Python
在python win系统下 打开TXT文件的实例
Apr 29 Python
django主动抛出403异常的方法详解
Jan 04 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
pytorch标签转onehot形式实例
Jan 02 Python
浅谈Python中threading join和setDaemon用法及区别说明
May 02 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
pandas提升计算效率的一些方法汇总
May 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
PHP实现网上点歌(二)
2006/10/09 PHP
Mysql和网页显示乱码解决方法集锦
2008/03/27 PHP
PHP全概率运算函数(优化版) Webgame开发必备
2011/07/04 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
PHP制作图形验证码代码分享
2014/10/23 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
网站基于flash实现的Banner图切换效果代码
2014/10/14 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
Angular2 父子组件数据通信实例
2017/06/22 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
vue新建项目并配置标准路由过程解析
2019/12/09 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
Python实现合并字典的方法
2015/07/07 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
通过shell+python实现企业微信预警
2019/03/07 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
django使用channels实现通信的示例
2020/10/19 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
关于礼仪的演讲稿
2014/01/04 职场文书
人事主管岗位职责
2014/01/30 职场文书
群众路线调研报告范文
2014/11/03 职场文书
美术教师求职信范文
2015/03/20 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL