python中的sys模块和os_Python系统模块sys和os使用(一)

Python中大多数系统级接口都集中在两个模块: sys和os

———《Programming Python》

sys与os都是大型的模块,提供了基础的系统接口,我们先简单看一下它们各有什么基础功能

>>>import sys, os

>>>len(dir(sys)), len(dir(os)) # This shows

(65, 122)

可见这两个模块的属性列表都是非常长的,以下是一些基础操作

os.path.isdir,

os.path.isfile,

os.exists,

os.path.getsize

顾名思义,这是用来查看路径/文件是否存在的,getsize可以获取文件大小(kb)

>>> import os

>>> os.path.isdir(r"C:\Users")

True

# "C:Users", r"C:\Users", "C:Users"

>>>os.path.getsize(r'C:\Users')

4096

>>>os.path.exists(r"C:\Users\Myself\Appdata")

True

os.path.split,

os.path.join,

os.path.dirname,

os.path.basename

这些方法主要是对一个路径进行具体处理,默认按照dirname, basename的方式进行分解或组合

>>>a = os.path.split(r"C:\temp\data.txt")

... print(a)

('C:\\temp', 'data.txty')

>>>os.path.join(*a)

'C:\temp\data.txt'

可以看出split与join是一对功能互异的方法

>>>file_loc = r"C:\Users\test.csv"

>>>os.path.dirname(file_loc), os.path.basename(file_loc)

('C:\\Users', 'test.csv')

# 这里使用了Windows风格的路径表示

除此之外,我们也可以使用字符串的split以及join方法简单类似实现,例如

>>>pathname = r'D:\envs\WebView\Scripts\wheel.py'

>>>pathname.split(os.sep)

['D:', 'envs', 'WebView', 'Scripts', 'wheel.py']

# 注意这里的os.sep,这可以被设置,也会在不同的平台下初始

>>>os.sep.join(pathname.split(os.sep))

'D:\\envs\\WebView\\Scripts\\wheel.py'

注意os模块下的os.path.normpath也很好用,可以用来规范一个路径,用法如下

>>>os.path.normpath('C:User\Lenove//test')

'C:User\\Lenove\\test'

os.path.abspath

根据传入的相对/绝对路径返回对应的绝对路径

>>>os.path.abspath('') == os.getcwd()

True

# 表明abspath可以以当前目录为根据,

# ‘’是相对路径的写法, 等同于'.'记法

>>>rela_loc = ['.', '..', '../tmp', 'tmp/test.txt']

# 先来测试相对路径表示方法

>>>print('\n'.join(os.path.abspath(i) for i in rela_loc))

D:\Items\PythonFiles\systest

D:\Items\PythonFiles

D:\Items\PythonFiles\tmp

D:\Items\PythonFiles\systest\tmp\test.txt

>>>abs_loc = [r"C:/", r"C:\Users", r"D:\Anaconda\DLLs"]

>>>print('\n'.join(os.path.abspath(i) for i in abs_loc))

C:\

C:\Users

D:\Anaconda\DLLs

os.system,

os.popen

在Python脚本中运行shell命令(不同环境下shell种类有所不同,如Windows的MS-DOS,Linux、Mac OS X的xterm等)

>>>repr(os.system)

''

>>>os.system("dir") # MS-DOS命令

D:\Items\PythonFiles\systest 的目录

2019/03/22 22:40

2019/03/22 22:40

2019/03/16 09:34 455 cmd_test1.py

2019/03/22 22:40 30 helloshell.py

6 个文件 1,975 字节

2 个目录 16,477,257,728 可用字节

>>> # 可见这里system方法与正常在命令行里执行的结果是一致的

os.popen(cmd, mode, buffering)

>>>content = os.popen("dir").read()

>>>print(content)

D:\Items\PythonFiles\systest 的目录

2019/03/22 22:40

2019/03/22 22:40

2019/03/16 09:34 455 cmd_test1.py

2019/03/22 22:40 30 helloshell.py

6 个文件 1,975 字节

2 个目录 16,477,257,728 可用字节

>>> # 不难发现通过os.popen可以将命令结果定向输出

首次修改与 2019/3/22

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值