python:9:os模块与sys.argv
2017-10-19 08:08
295 查看
第一章: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模块中的路径名访问函数。
相关文章推荐
- python常用模块(random,hashlib,os,sys)
- python常见模块命令(os/sys/platform)
- python中os.path以及sys.path模块简介
- python3中模块详解--os模块和sys模块
- python模块-os,sys
- python模块之sys与os
- Python 中的os、sys模块
- Python os与sys模块解析
- python的基础模块(os,sys,time,shutil,differlib,socket)
- Python中os与sys两模块的区别
- python常见模块命令(os/sys/platform)
- python中常见模块命令(os/sys/platform)
- python内置模块[sys,os,os.path,stat]
- python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)
- python-时间模块,random、os、sys、shutil、json和pickle模块
- Python os模块和sys模块 操作系统的各种接口
- python常见模块命令(os/sys/platform)
- 2.24 学python os模块 sys模块 hashlib模块 logging模块
- Python中 os 与 sys 模块
- python中模块sys与os的一些常用方法