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"))

 

posted @ 2019-01-05 15:56  wqbin  阅读(3943)  评论(1编辑  收藏  举报