python 中的os模块
Posted 少年阿斌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.pardir ——获取当前上级目录=》返回 ..
note:除了前两个命令不带括号之外,以下命令基本都带括号。
os.getcwd()——全称应该是\'get current work directory\',获取当前文件所在的绝对路径。
os.getenv()和os.putenv()----分别用来读取和设置环境变量
os.environ(x [,x])--用来读取环境变量
区别:
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"))
以上是关于python 中的os模块的主要内容,如果未能解决你的问题,请参考以下文章