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

  • 相关阅读:
    SVN服务器搭建(一)
    排序算法二:冒泡排序
    【LeetCode】136. Single Number
    【LeetCode】217. Contains Duplicate
    【LeetCode】189. Rotate Array
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】26. Remove Duplicates from Sorted Array
    【LeetCode】20. Valid Parentheses
    【LeetCode】680. Valid Palindrome II
    【LeetCode】345. Reverse Vowels of a String
  • 原文地址:https://www.cnblogs.com/Lival/p/6204517.html
Copyright © 2011-2022 走看看