Python系统操作(sys、os)模块

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.stdout

sys.stderr

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

sys.modules

是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules将自动记录该模块。当第二次再导入该模块时,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编写平台无关的程序

函数

说明

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,οnerrοr=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
'''
Created on 2017年3月4日
 
@author: zxt
'''
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)) )

  • 18
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当您在Python中编写脚本时,您可能需要与操作系统进行交互,例如读取文件、创建目录、获取系统环境变量等。为了完成这些任务,Python提供了两个非常有用的模块ossysos模块提供了许多与操作系统交互的函数,它允许您执行以下任务: - 访问文件系统中的文件和目录。 - 与进程和进程组进行交互。 - 获取和设置环境变量。 - 执行命令和程序。 - 管理文件和目录权限。 - 等等。 下面是os模块中一些常用的函数: - os.getcwd():获取当前工作目录。 - os.listdir(path):返回指定目录下的所有文件和目录名。 - os.mkdir(path):创建新目录。 - os.path.exists(path):检查指定的路径是否存在。 - os.rename(src, dst):将文件或目录从src重命名为dst。 - os.remove(path):删除指定的文件。 - os.path.join(path, *paths):连接两个或更多的路径名组件。 sys模块提供了与Python解释器和它的环境进行交互的函数。它允许您执行以下任务: - 获取命令行参数。 - 获取Python解释器的版本和路径。 - 退出程序并返回状态码。 - 处理标准输入和输出。 - 设置和获取Python解释器的参数等。 下面是sys模块中一些常用的函数: - sys.argv:获取命令行参数。 - sys.exit([arg]):退出程序并返回状态码。 - sys.platform:返回当前操作系统平台名称。 - sys.version:返回Python解释器的版本号。 - sys.path:返回Python模块搜索路径。 总之,ossys模块提供了Python操作系统和解释器进行交互的强大功能,使得Python可以轻松地处理文件系统、环境变量、进程等各种任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值