zoukankan      html  css  js  c++  java
  • (python) 标准模块sys和os的使用

    一、sys模块

    包含了系统的相关的功能。我们来学习sys.argv,它包含命令行参数。

    例子:定义了一个add函数,用来实现两个整数的相加。

    #! coding=utf-8
    #  usersys.py
    import sys
    def add(a,b):
        print a+b
    print sys.argv
    if len(sys.argv)<2:
        print "argv is lower 2"
    else:
        if sys.argv[1].startswith("-") and (len(sys.argv)==2):
            option=sys.argv[1][2:]
            if option=="help":
                print """this is my add,two parama a and b"""
            elif option=="version":
                print "v1.0"
            else:
                print "no this option"
    
        elif len(sys.argv)==3:
            try:
                a=int(sys.argv[1])
                b=int(sys.argv[2])
                add(a,b)
            except Exception ,e:
                print e
        else:
            print "parama is biger 3"

     在cmd命令行下,运行sysuser.py。有以下几种情况:

    1、输入命令:python sysuser.py 

         命令行参数只有1个,此时sys.argv=["sysuser.py"]. 打印“argv is lower 2”

    2、输入命令:python sysuser.py --help (或输入命令:python sysuser.py --version)

         命令行参数有2个,此时sys.argv=["sysuser.py","--help"]. 打印"""this is my add,two parama a and b"""

    3、输入命令:python sysuser.py 1 2

        命令行参数有3个,此时sys.argv=["sysuser.py","1","2"]. 这时候做加法运算

    4、其他输入情况,将进行相应处理。

    我们发现sys.argv是一个列表,并且把用户输入的每个参数都以字符串的形式存储为每一个元素。所以在处理数据的时候,需要进行数据类型转换

    二、os模块

        这个模块包含普遍的操作系统功能。

        1、os.remove()删除一个文件

    import os
    path="E:\study\test.txt"
    os.remove(path)
    

     2、os.name获取当前使用的平台,如果是windows,则返回:“nt”,如果是linux/unix,则返回:“posix”

    import os
    print os.name
    

       3、os.getcwd()获取当前工作的目录路径

    import os
    print os.getcwd()
    

     4、os.getenv()获取环境变量

    import os
    print os.getenv("JAVA_HOME")#获取环境变量JAVA_HOME
    

      结果:D:Program FilesJavajdk1.7.0_10

      5、os.path.isfile() 和os.path.isdir()分别用来检测所给路径是文件还是目录

    import os
    print os.path.isdir("E:\study\")
    

      结果:True

     6、os.path.exists() 检测所给路径是否存在

    import os
    print os.path.exists("E:\study\")

    7、os.path.split()用来将一个目录分割成路径和文件名

    import os
    print os.path.split("E:\study\1.txt")
    

      结果:('E:\study', '1.txt')

    8、os.sep 获取操作系统的文件目录分割符,如Windows为

    9 、os.linesep获取行终止符

    import os
    print "ahhaha"+os.linesep+"jsjssj"
    print  "ahhaha"+"jsjssj"
    

    结果:

    ahhaha
    jsjssj
    ahhahajsjssj

    例子:两种遍历某目录下的文件

    #! coding=utf-8
    import os
    import time
    
    
    def getListDir(basepath):
        listDir = os.listdir(basepath)
        for listIndex in listDir:
            listIndexPath=basepath+"//"+listIndex
            if os.path.isdir(listIndexPath):
                getListDir(listIndexPath)#递归遍历
            else:
                print (listIndexPath)
    
    
    def useOsWalk(basepath):
        for folder,subfolder,files in os.walk(basepath):#使用os.walk函数,该函数将迭代的返回起始目录,起始目录下的子文件夹和文件,其格式为一个元祖。
            for file in files:
                print (str(folder.replace("\","//"))+"//"+file)
    
    if __name__=="__main__":
        basepath = "E://test"
        print("遍历文件第1种方式")
        getListDir(basepath)
        print("遍历文件第2种方式")
        useOsWalk(basepath)

    输出结果:

    遍历文件第1种方式
    E://test//0.0011305996553642712.txt
    E://test//1.0803627858234796e-06.txt
    E://test//study//0.002160185390254047.txt
    E://test//study//0.003150878064854178.txt
    E://test//study//0.004092954414092252.txt
    E://test//study//yy//0.005170076111558261.txt
    遍历文件第2种方式
    E://test//0.0011305996553642712.txt
    E://test//1.0803627858234796e-06.txt
    E://test//study//0.002160185390254047.txt
    E://test//study//0.003150878064854178.txt
    E://test//study//0.004092954414092252.txt
    E://test//study//yy//0.005170076111558261.txt

  • 相关阅读:
    UVa 291 The House Of Santa Claus——回溯dfs
    (优先)队列简单总结
    POJ 2255 Tree Recovery——二叉树的前序遍历、后序遍历、中序遍历规则(递归)
    博弈论入门 Bash 、Nim 、Wythoff's Game结论及c++代码实现
    UVa 167(八皇后)、POJ2258 The Settlers of Catan——记两个简单回溯搜索
    欧几里得(辗转相除gcd)、扩欧(exgcd)、中国剩余定理(crt)、扩展中国剩余定理(excrt)简要介绍
    51nod 1135 原根 (数论)
    「学习笔记」扩展KMP (简)
    「解题报告」[luoguP6594]换寝室 (二分答案 树形DP)
    「解题报告」[luoguP6585]中子衰变 (交互题 分类讨论)
  • 原文地址:https://www.cnblogs.com/Lival/p/6204517.html
Copyright © 2011-2022 走看看