操作系统(Operating System,简称os,是配置在计算机硬件上的第一层软件,是对计算机硬件系统的首次扩充,是一个计算机系统最基础,也是最重要的系统软件。
python官方文档解释:os — 各种各样的操作系统接口,在保持功能可用和接口的一致性下,提供一个便携式去使用操作系统的相关功能。
import
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', '_AddedDllDirectory', '_Environ',
'__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv',
'_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'add_dll_directory', 'altsep', 'chdir',
'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull',
'dup', 'dup2', 'environ', '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_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']
'''
# 当前使用平台
print(os.name) # 返回当前使用平台的代表字符,Windows用'nt'表示,Linux用'posix'表示
# >>> nt
# 当前路径和文件
path =r'C:\Users\Administrator\Desktop\Day\Day16~20\Day16\random随机模块'
print(os.getcwd()) #返回当前工作目录
print(os.listdir(path)) #返回path目录下所有文件列表
# 获取绝对路径
path = __file__ # 当前文件
print(os.path.abspath(path))
# 创建目录
os.mkdir('os/a') # 创建单个目录
path = "os/a/b/c"
os.makedirs(path, mode=0o777) # 递归创建多个目录 ,mode=0o777代表文件夹权限
# 结果:创建了/b/c等2个目录
'''
mkdir和makedirs 的区别:
mkdir: 如果 os目录不存在,则创建os/a 则会报错
makedirs: 如果 os目录不存在,os.mkdir('os/a/b/c')仍然正常
'''
os.rename("oldname","newname") #重命名文件/目录
# 删除文件或者目录
os.remove('path1.py') # 删除文件(必须是文件)
os.rmdir(path) # 删除path目录(只能删除一级目录,如'c:\a\b'),b
os.removedirs(path) # 删除多级目录(如'F:\a\b'),必须为空目录,则删除a、b目录
os.system() #运行shell命令
>>>os.system('cmd') #Windows下打开终端
>>>os.system('ls') #Linux下查看当前目录所有文件
# 查看文件名或者目录
print(os.path.split(r'c:\\python\js.text') ) # 将path的目录和文件名分开为元组
# ('c:\\\\python', 'js.text')
os.path.dirname(path) # 返回path中的目录(文件夹部分),结果不包含'\'
os.path.basename(path) # 返回path中的文件名
os.listdir('dirname') #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
# 拼接绝对路径
ABS_path = os.path.join('c:\\','a','c.txt','c:\\','b','h.txt')
print(ABS_path)
# c:\b\h.txt
'''
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
'''
os.path.exists(path) #判断path是否存在,存在返回True,不存在返回False
os.path.isfile(path) #判断path是否为文件,是返回True,不是返回False
os.path.isdir(path) #判断path是否目录,是返回True,不是返回False
g = os.walk(r'C:\Users\Administrator\Desktop\Day\Jasn--70--Days') #递归返回path下的目录(包括path目录)、子目录、文件名的三元组
for i in g: # g是生成器对象
print(i)
os.path.getsize(path) #返回文件的大小,若是目录则返回0
os.path.getmtime(path) #返回文件或目录的最后修改时间,结果为秒数
os.path.getatime(path) #返回文件或目录的最后访问时间,结果为秒数
os.path.getctime(path) #返回文件或目录得创建时间,结果为秒数
os.chdir(path) #将当前工作目录更改为指定路径path,如果path不存在,则会报错。
os.path.abspath(path)
#返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。
os.sep #输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep #输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep #输出用于分割文件路径的字符串 win下为;,Linux下为:
# 1、获取某个文件所在目录的上一级目录。
# # 例如'D:\python\projects\test19.py'目录的结果 :D:\python\projects
import os
#
# path = r'D:\python\projects\test19.py'
# print(os.path.dirname(path))
# 2、写一个函数,接受一个参数,如果是文件,就打印出这个文件绝对路径,如果是文件夹,就打印出这个文件夹下所有的py文件的绝对路径
def func(paths):
if os.path.isfile(paths) and paths.endswith('.py'):
print(paths)
elif os.path.isdir(paths):
for ABS_path, _, files in os.walk(paths):
for file in files:
if file.endswith('.py'):
file_paths = ABS_path+ file
print(file_paths)
func(r'C:\Users\Day\python--70--Days\常用模块')
func(r'C:\Users\Day\python--70--Days\常用模块\os模块\ceshi.py')