2018年8月25日python中os模块和sys模块的区别

<os和sys的官方解释>

➤os

    os: This module provides a portable way of using operating system dependent functionality.

    这个模块提供了一种方便的使用操作系统函数的方法。

➤sys

    sys: This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter.

    这个模块可供访问由解释器使用或维护的变量和与解释器进行交互的函数。

➤总结

    os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。

<os 常用方法>

os.remove(‘path/filename’) 删除文件 os.rename(oldname, newname) 重命名文件 os.walk() 生成目录树下的所有文件名 os.chdir('dirname') 改变目录 os.mkdir/makedirs('dirname')创建目录/多层目录 os.rmdir/removedirs('dirname') 删除目录/多层目录 os.listdir('dirname') 列出指定目录的文件 os.getcwd() 取得当前工作目录 os.chmod() 改变目录权限 os.path.basename(‘path/filename’) 去掉目录路径,返回文件名 os.path.dirname(‘path/filename’) 去掉文件名,返回目录路径 os.path.join(path1[,path2[,...]]) 将分离的各部分组合成一个路径名 os.path.split('path') 返回( dirname(), basename())元组 os.path.splitext() 返回 (filename, extension) 元组 os.path.getatime\ctime\mtime 分别返回最近访问、创建、修改时间 os.path.getsize() 返回文件大小 os.path.exists() 是否存在 os.path.isabs() 是否为绝对路径 os.path.isdir() 是否为目录 os.path.isfile() 是否为文件

<sys 常用方法>

sys.argv 命令行参数List,第一个元素是程序本身路径 sys.modules.keys() 返回所有已经导入的模块列表 sys.exc_info() 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息 sys.exit(n) 退出程序,正常退出时exit(0) sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0 sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.maxunicode 最大的Unicode值 sys.modules 返回系统导入的模块字段,key是模块名,value是模块 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 sys.stdout 标准输出 sys.stdin 标准输入 sys.stderr 错误输出 sys.exc_clear() 用来清除当前线程所出现的当前的或最近的错误信息 sys.exec_prefix 返回平台独立的python文件安装的位置 sys.byteorder 本地字节规则的指示器,big-endian平台的值是'big',little-endian平台的值是'little' sys.copyright 记录python版权相关的东西 sys.api_version 解释器的C的API版本 sys.stdin,sys.stdout,sys.stderr

    stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足要求, 它们就是所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们

import sys

sys.stdout.write('HelloWorld!')

print 'Please enter yourname:',
name=sys.stdin.readline()[:-1]
print 'Hi, %s!' % name

    常用print和raw_input来进行输入和打印,那么print 和 raw_input是如何与标准输入/输出流建立关系:其实Python程序的标准输入/输出/出错流定义在sys模块中,分别 为: sys.stdin,sys.stdout, sys.stderr     下列的程序也可以用来输入和输出是一样的,在Python运行环境中输入以下代码:

import sys
for f in (sys.stdin,sys.stdout, sys.stderr): print f

    输出为:

<open file'<stdin>', mode 'r' at 892210>
<open file'<stdout>', mode 'w' at 892270>
<open file'<stderr>', mode 'w at 8922d0>

    由此可以看出stdin, stdout, stderr在Python中无非都是文件属性的对象,他们在Python启动时自动与Shell 环境中的标准输入,输出,出错关联。     而Python程序的在Shell中的I/O重定向与本文开始时举的DOS命令的重定向完全相同,其实这种重定向是由Shell来提供的,与Python 本身并无关系。那么我们可以在Python程序内部将stdin,stdout,stderr读写操作重定向到一个内部对象.     Python提供了一个StringIO模块来完成这个设想,比如:

from StringIO import StringIO
import sys
buff =StringIO()

temp =sys.stdout                              #保存标准I/O流
sys.stdout =buff                                #将标准I/O流重定向到buff对象
print 42, 'hello', 0.001

sys.stdout=temp                                #恢复标准I/O流
print buff.getvalue()

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏从零开始学自动化测试

python文档23-fixture作为参数传入,error和failed区别

fixture是pytest的核心功能,也是亮点功能,熟练掌握fixture的使用方法,pytest用起来才会得心应手!

1624
来自专栏技术专栏

慕课网Flask高级编程实战-7.静态文件、模板、消息闪现与Jinja2

Flask访问静态文件非常简单,只需要在项目根目录建立static文件夹。将静态资源文件放入static下即可。访问的时候访问http://ip:port/st...

2643
来自专栏Kevin-ZhangCG

[ Java面试题 ]多线程篇

2727
来自专栏技巅

分布式日志收集系统: Facebook Scribe之结构及源码分析

1922
来自专栏测试开发架构之路

C++/C头文件 .h和 .c

  在C语言家族程序中,头文件被大量使用。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成...

3608
来自专栏我的博客

TP入门第十天

1、自动验证 数据对象是由表单提交的$_POST数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性,是由多个验证因子组成...

3415
来自专栏mwangblog

Linux中的管道命令(五)

从上面的例子看出,只要搜索模式gaga在行中,就会被匹配到;如果想要匹配单词gaga,则需使用-w选项;以行为单位进行匹配,则需要使用-x选项。下面的例子搜索包...

892
来自专栏Golang语言社区

Go语言Goroutine与Channel内存模型

Go语言内存模型规定了在一个goroutine中一个变量的读取的情况下,确保能够观察到在其他另外goroutine中写入同样变量的值。也就是说,如果在多个gor...

3596
来自专栏积累沉淀

干货--Redis 30分钟快速入门

一、 redis环境搭建 1.简介        redis是一个开源的key-value数据库。它又经常被认为是一个数据结构服务器。因为它的value不仅...

32610
来自专栏小筱月

shell 文本操作命令

:s/old/new/g 将当前行中查找到的所有字符串“old” 替换为“new”

1362

扫码关注云+社区

领取腾讯云代金券