介绍
在Python中,os
模块是一个与操作系统交互的标准库,提供了许多用于文件和目录操作、进程管理、环境变量等功能。下面是os
模块中一些常用的功能和方法:
用法
1.查看os模块内容(import os print(dir(os)) )
结果如下:
['DirEntry', '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', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', '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', 'fspath', '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']
2.获取和设置当前工作目录:
os.getcwd()
: 获取当前工作目录的路径。os.chdir(path)
: 切换当前工作目录到指定路径。
3.文件和目录操作:
os.listdir(path)
: 返回指定目录下的所有文件和子目录的列表。os.mkdir(path)
: 创建一个新目录。os.rmdir(path)
: 删除一个目录。os.remove(path)
: 删除一个文件。
4.文件路径操作:
os.path.join(path1, path2, ...)
: 将多个路径组合成一个路径。os.path.abspath(path)
: 返回指定路径的绝对路径。os.path.exists(path)
: 判断指定路径是否存在。os.path.isdir(path)
: 判断指定路径是否是一个目录。os.path.isfile(path)
: 判断指定路径是否是一个文件。
5.环境变量操作:
os.environ
: 返回一个包含环境变量的字典。os.environ.get(key)
: 获取指定环境变量的值。os.environ.putenv(key, value)
: 设置指定环境变量的值。
6.进程管理:
os.system(command)
: 在操作系统上执行一个命令。os.spawn*()
: 一系列函数用于启动新进程。os.kill(pid, signal)
: 向指定进程发送信号。
下面是一个简单的示例,演示如何使用os
模块来列出当前工作目录下的所有文件和目录:
import os
current_dir = os.getcwd()
print(f"当前工作目录: {current_dir}")
print("当前目录下的文件和目录:")
for item in os.listdir(current_dir):
print(item)
7.判断文件是否存在:
'''
#os.access() 方法使用当前的uid/gid尝试访问路径
import os, sys
# 假定 /tmp/foo.txt 文件存在,并有读写权限
'''
os.F_OK: 作为access()的mode参数,测试path是否存在。
os.R_OK: 包含在access()的mode参数中 , 测试path是否可读。
os.W_OK 包含在access()的mode参数中 , 测试path是否可写。
os.X_OK 包含在access()的mode参数中 ,测试path是否可执行。
'''
ret = os.access("./tmp/foo.txt", os.F_OK)
print ("F_OK - 返回值 %s"% ret)
ret = os.access("./tmp/foo.txt", os.R_OK)
print ("R_OK - 返回值. %s"% ret)
ret = os.access("./tmp/foo.txt", os.W_OK)
print ("W_OK - 返回值 %s"% ret)
ret = os.access("./tmp/foo.txt", os.X_OK)
print ("X_OK - 返回值 %s"% ret)
#os.chdir() 方法用于改变当前工作目录到指定的路径。
import os, sys
path = "./tmp"
# 查看当前工作目录
retval = os.getcwd()
print ("当前工作目录为 %s" % retval)
# 修改当前工作目录
os.chdir( path )
# 查看修改后的工作目录
retval = os.getcwd()
print ("目录修改成功 %s" % retval)
import os,stat
path = "/tmp/foo.txt"
# 为文件设置标记,使得它不能被重命名和删除
flags = stat.SF_NOUNLINK
retval = os.chflags( path, flags )
print ("返回值: %s" % retval)