python:9:os模块与sys.argv

第一章:python

第九节:执行非python程序的os模块及命令行参数sys.argv

1,命令行参数:sys.argv的用法

sys模块通过sys.argv属性提供了对命令行参数的访问。
命令行参数是调用某个程序时除程序名以外的其他参数。
在python中,sys.argv代表命令行输入列表的长度,而该列表的第一项sys.argv[0]永远是程序的名称,即该脚本的文件名(例如:orthoMCL_identity.py)。
>>> import sys
>>> if len(sys.argv) != 3:
... ····print 'need 2 parameter
>>> db=sys.argv[1]
>>> identity=sys.argv[2]
这里要运行python orthoMCL_identity.py db 90,这里的db 90是要输入的两个参数,sys.argv长度为3,orthoMCL_identity.py作为脚本名称,则需要另外两个参数db和90,则满足sys.argv为3的长度。
这里sys.argv[0]是orthoMCL_identity.py这个文件名,而sys.argv[1]表示第一个命令行参数,而sys.argv[2]表示第二个命令行参数。

2,执行非python程序:os模块的用法

os模块提供了多数操作系统的功能接口函数,当os模块被导入后,它会自行适应不同的操作系统平台。
>>> import os
>>> os.chdir('dirname')#进入一个目录
>>> os.mkdir('dirname')#创建一个目录
>>> os.makedirs('dirname1/dirname2')#创建一个多级目录
>>> os.getcwd()#获取工作的目录路径,即当前工作目录
>>> os.rename('oldname', 'newname')#重命名文件/目录
>>> os.system('ls')#运行shell命令
注意,这个shell命令必须是shell内的的命令,而不是~/.bashrc用户自己内定的环境变量,例如alias ll=‘ls -l’,则os.system(‘ll’)会显示ll未定义。
>>> os.popen('bash command')#运行shell命令,生成对象,利用标签定义后可再用read()或readlines()读取。
实例:
>>> os.popen('less name.txt')
<open file 'less name.txt', mode 'r' at 0x2afe3743edbo>
>>> os.popen('less name.txt').read()
'110 120 119\n'
但要打开的文件名前一定要加入less,cat等shell命令,单单只有文件名则会读取空内容。

目录遍历

os.walk()
函数声明:os.walk(path)
该函数返回一个元组,该元组有三个元素
这3个元素分别表示每次遍历的路径名目录列表文件列表
所以,可以将传值的目录进行遍历,且以元组形式返回值
若传值为绝对路径,则返回一个生成器
>>> os.walk('/root/pypi/testdir')
<generator object walk at 0x7f36135a8500>
>>> g=os.walk('/root/pypi/testdir')#os.walk(os.getcwd())
>>> g.next()
('/root/pypi/testdir', ['jpg'], ['f3', 'f1', 'f2'])
返回一个元组内的三个元素,第一个元素为当前目录路径(绝对路径),第二个元素为该目录下的子目录(如果有多个子目录则返回的列表内有多个元素,如果没有子目录返回空列表),第三个元素为当前目录下的文件名(和第二个元素返回结果大致相同,列表内存在多个元素则存在多个文件,没有文件则返回空列表)
>>> g.next()
('/root/pypi/testdir/jpg', [], ['getjpg.py'])
可返回子目录下的内容,[]表示子目录下再无目录
>>> g.next()
StopIteration

os.path中的join()用法,实现输出当前目录及子目录的绝对路径
os.path.join(fpath, filename)
会将fpath这个路径及filename文件名直接作拼接
>>> for path, d, filelist in os.walk(os.getcwd()):#每次遍历输出一个路径名称,第一次是当前目录,第二次是当前目录下的子目录
... ····for filename in filelist:#循环取出该目录下的文件名
... ········os.path.join(path, filename)
...
os.path是一个方法,具体实现方法是os.path的一些模块,书中222页是op.path模块中的路径名访问函数。https://docs.python.org/2/library/os.path.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值