• python 中的os模块


    无论在写自动化脚本还是做测试os模块都是一个重量级的模块。今天我要总结一下os模块,os模块下的方法是真的多。

    import os
    print([obj for obj in dir(os) if not obj.startswith("__")])
    
    ['F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 
    'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', 
    '_DummyDirEntry', '_Environ', '_dummy_scandir', '_execvpe', '_exists', '_exit', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close',
     'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 
     'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fstat', 'fsync', 'ftruncate',
     'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 
     'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename',
     'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_float_times', 
     'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 
     'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']

    os.name——name顾名思义就是'名字',这里的名字是指操作系统的名字,主要作用是判断目前正在使用的平台,并给出操作系统的名字,如Windows 返回 'nt'; Linux 返回'posix'。注意该命令不带括号。

    os.pardir ——获取当前上级目录=》返回 ..

    note:除了前两个命令不带括号之外,以下命令基本都带括号。

    os.getcwd()——全称应该是'get current work directory',获取当前文件所在的绝对路径。

    os.getenv()os.putenv()----分别用来读取和设置环境变量

    os.environ(x [,x])--用来读取环境变量

    区别:

    os.environ(x [,x]) raises an exception if the environmental variable does not exist.
    os.getenv(x) does not raise an exception ,but returns None.
    >>> import os
    >>> print(os.getenv("HOME"))
    /home/centos
    >>> print(os.getenv("PATH"))
    /home/centos/anaconda3/bin:/home/centos/anaconda3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/soft/jdk/bin:/soft/hadoop/bin:/soft/hadoop/sbin:/soft/zk/bin:/soft/hive/bin:/soft/hbase/bin:/soft/phoenix/bin:/soft/sqoop/bin:/soft/hue-4.1.0/build/env//bin:/soft/flume/bin:/soft/kafka/bin:/home/centos/.local/bin:/home/centos/bin

    os.listdir(path)——列出path目录下所有的文件和目录名。Path参数可以省略。例 以列表的形式全部列举出来,其中没有区分目录和文件。

    os.remove(path)——删除path指定的文件,该参数不能省略。

    os.rmdir(path)——删除path指定的目录,该参数不能省略。

    os.mkdir(path)——创建path指定的目录,该参数不能省略。 注意:这样只能建立一层

    os.makedirs(path)——递归建立可以创建多层目录

    os.chdir(path)——'change dir'改变目录到指定目录=》相当于linux的cd命令

    os.path.isfile(path)——判断指定对象是否为文件。是返回True,否则False

    os.path.isdir(path)——判断指定对象是否为目录。是True,否则False。

    os.path.exists(path)——检验指定的对象是否存在。是True,否则False.

    os.path.split(path)——返回路径的目录和文件名,即将目录和文件名分开,放到一个元祖里。此处只是把前后两部分分开而已。就是找最后一个'/'。

    os.path.join(path, name)——连接目录和文件名,与os.path.split(path)相对。

    os.path.abspath()——获得绝对路径。

    os.path.basename(path)——返回文件名

    os.path.dirname(path)——返回文件路径

    os.path.getsize()——获得文件的大小,如果为目录,返回0

    os.system(cmd)——执行shell命令。返回值是脚本的退出状态码,0代表成功,1代表不成功

     

    Demo 递归查找文件

    import os
    def findFile(dir,target):
        list1=[]
        filenames=os.listdir(dir)
        for filename in filenames:
            abpath=os.path.join(dir,filename)
            if os.path.isfile(abpath):
                if filename.endswith(target):
                    list1.append(abpath)
            else:
                findFile(abpath,target)
        return list1
    
    print(findFile("D:/Program Files/feiq/Recv Files",".sql"))
  • 相关阅读:
    这个Pandas函数可以自动爬取Web图表
    /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/local/python3.6/lib/python3.6/site-packages/paddle/fluid/core_avx.so)
    kubernetes yaml详解
    centos 安装kubernetes
    初识kafka-connect
    Docker1:本地连接Docker中的mysql,实现数据同步
    git分支管理规范
    cat 配置告警规则
    Java的即时编译(Just In Time, JIT)及其优化
    java自定义实现一个缓存器
  • 原文地址:https://www.cnblogs.com/wqbin/p/10224843.html
Copyright © 2020-2023  润新知