提供对操作系统进行调用的接口
import os
os.getcwd() linux pwd命令
# linux # = linux pwd 命令 >>> os.getcwd() '/root' # windows >>> os.getcwd() 'C:\Users\Administrator' '''
os.chdir() linux cd命令
# 改变当前脚本工作目录;相当于shell下cd # linux >>> os.chdir('/data') >>> >>> >>> os.getcwd() '/data' # windows 第一种方法 >>> os.chdir("c:\Users") >>> >>> os.getcwd() 'c:\Users' >>> 第二种方法 >>> os.chdir(r"c:UsersAdministrator") >>> >>> os.getcwd() 'c:\Users\Administrator' >>>
推荐第二种方法
os.makedirs() linux mkdir -p 递归目录
windows
>>> os.makedirs(r"c:acd")
linux
>>> os.makedirs('/data/aaa') [root@salt-server-192 ~]# ls /data/ aaa/ app/ mysql/
os.removedirs() 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
先删d,检测到c空目录再删c,再到b...
# windows >>> os.removedirs(r"c:acd") # linux >>> os.removedirs('/data/aaa') [root@salt-server-192 data]# ls app mysql
os.mkdir() 生成单级目录;相当于linux 中mkdir dirname
windows
# windows >>> os.mkdir(r"c:a") Traceback (most recent call last): File "<stdin>", line 1, in <module> FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'c:\a\b' >>> os.mkdir(r"c:a") >>> os.mkdir(r"c:a")
linux
# linux >>> os.mkdir('/data/a') >>> os.mkdir('/data/a/b') [root@salt-server-192 b]# pwd /data/a/b
os.rmdir() 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
# windows >>> os.rmdir(r"c:a") # linux os.rmdir('/data/a/b') [root@salt-server-192 a]# pwd /data/a [root@salt-server-192 a]# ls [root@salt-server-192 a]#
os.listdir() 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
windows
# windows >>> os.listdir('..') ['Administrator', 'All Users', 'Default', 'Default User', 'desktop.ini', 'Public '] >>> os.listdir(r'f:') ['$RECYCLE.BIN', 'KwDownload', 'MyDrivers', 'QMDownload', 'qqpcmgr_docpro', 'Sys tem Volume Information', '迅雷下载']
linux
# linux >>> os.listdir('.') ['a', 'app', 'mysql'] >>> >>> os.listdir('..') ['tmp', 'lost+found', 'home', 'selinux', 'srv', 'dev', 'media', 'lib', 'etc', 'opt', 'proc', 'var', 'data', 'boot', 'lib64', 'sbin', '.autorelabel', 'mnt', 'root', 'bin', '.autofsck', 'sys', 'usr'] >>> >>> os.listdir('/root/') ['.tcshrc', '.mysql_history', 'tar', '.cshrc', '.viminfo', 'sh', '.bash_history', '.pki', 'install.log', 'anaconda-ks.cfg', '.bash_profile', '.bashrc', '.bash_logout', 'install.log.syslog', '.ssh'] >>>
os.remove() # 删除一个文件
os.rename("oldname","newname") # 重命名文件/目录
os.stat() 获取文件/目录信息
# linux >>> os.stat('/root/anaconda-ks.cfg') posix.stat_result(st_mode=33152, st_ino=393225, st_dev=64768L, st_nlink=1, st_uid=0, st_gid=0, st_size=1096, st_atime=1509983597, st_mtime=1509983597, st_ctime=1509983598) >>> # windows >>> os.stat(r'..desktop.ini') os.stat_result(st_mode=33206, st_ino=281474976729839, st_dev=3459212205, st_nlin k=1, st_uid=0, st_gid=0, st_size=174, st_atime=1247547264, st_mtime=1247547264, st_ctime=1247547264)
os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
# windows >>> os.sep '\' # linux >>> os.sep '/'
os.linesep 输出当前平台使用的行终止符,win下为"
",Linux下为"
"
# windows >>> os.linesep ' ' # linux >>> os.linesep ' '
os.environ() 显示系统环境变量
print(os.environ) environ({'ALLUSERSPROFILE': 'C:\ProgramData', 'APPDATA': 'C:\Users\Administrator\AppData\Roaming', 'COMMONPROGRAMFILES': 'C:\Program Files\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\Program Files (x86)\Common Files', 'COMMONPROGRAMW6432': 'C:\Program Files\Common Files', 'COMPUTERNAME': 'USER-20171103BR', 'COMSPEC': 'C:\Windows\system32\cmd.exe', 'FP_NO_HOST_CHECK': 'NO', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\Users\Administrator', 'LOCALAPPDATA': 'C:\Users\Administrator\AppData\Local', 'LOGONSERVER': '\\USER-20171103BR', 'NUMBER_OF_PROCESSORS': '4', 'OS': 'Windows_NT', 'PATH': 'C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;C:\Users\Administrator\AppData\Local\Programs\Python\Python36', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 58 Stepping 9, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '3a09', 'PROGRAMDATA': 'C:\ProgramData', 'PROGRAMFILES': 'C:\Program Files', 'PROGRAMFILES(X86)': 'C:\Program Files (x86)', 'PROGRAMW6432': 'C:\Program Files', 'PSMODULEPATH': 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\', 'PUBLIC': 'C:\Users\Public', 'PYCHARM_HOSTED': '1', 'PYTHONIOENCODING': 'UTF-8', 'PYTHONPATH': 'C:\Users\Administrator\PycharmProjects', 'PYTHONUNBUFFERED': '1', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\Windows', 'TEMP': 'C:\Users\ADMINI~1\AppData\Local\Temp', 'TMP': 'C:\Users\ADMINI~1\AppData\Local\Temp', 'USERDOMAIN': 'USER-20171103BR', 'USERNAME': 'Administrator', 'USERPROFILE': 'C:\Users\Administrator', 'WINDIR': 'C:\Windows', 'WINDOWS_TRACING_FLAGS': '3', 'WINDOWS_TRACING_LOGFILE': 'C:\BVTBin\Tests\installpackage\csilogfile.log', '_DFX_INSTALL_UNSIGNED_DRIVER': '1'})
>>> os.environ environ({'ALLUSERSPROFILE': 'C:\ProgramData', 'APPDATA': ' # 分隔文件路径字符串 ; tor\AppData\Roaming', 'COMMONPROGRAMFILES': 'C:\Program 'COMMONPROGRAMFILES(X86)': 'C:\Program Files (x86)\Commo RAMW6432': 'C:\Program Files\Common Files', 'COMPUTERNAME 'COMSPEC': 'C:\Windows\system32\cmd.exe', 'FP_NO_HOST_C VE': 'C:', 'HOMEPATH': '\Users\Administrator', 'LOCALAPPD inistrator\AppData\Local', 'LOGONSERVER': '\\USER-20171 OCESSORS': '4', 'OS': 'Windows_NT', 'PATH': 'C:\Windows\s :\Windows\System32\Wbem;C:\Windows\System32\WindowsPo Program Files\TortoiseSVN\bin;C:\Users\Administrator\A ms\Python\Python36', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS WSH;.MSC', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_ID amily 6 Model 58 Stepping 9, GenuineIntel', 'PROCESSOR_LEVE EVISION': '3a09', 'PROGRAMDATA': 'C:\ProgramData', 'PROGRA Files', 'PROGRAMFILES(X86)': 'C:\Program Files (x86)', 'P ogram Files', 'PROMPT': '$P$G', 'PSMODULEPATH': 'C:\Window owerShell\v1.0\Modules\', 'PUBLIC': 'C:\Users\Public', ole', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\Windows', 'TE NI~1\AppData\Local\Temp', 'TMP': 'C:\Users\ADMINI~1\A 'USERDOMAIN': 'USER-20171103BR', 'USERNAME': 'Administrato :\Users\Administrator', 'WINDIR': 'C:\Windows', 'WINDOWS 'WINDOWS_TRACING_LOGFILE': 'C:\BVTBin\Tests\installpack '_DFX_INSTALL_UNSIGNED_DRIVER': '1'})
os.pathsep 输出用于分割文件路径的字符串
>>> os.pathsep ';'
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system() 运行shell命令,直接显示
# windows os.system("dir") # linux >>> os.system("ls") a app mysql 0
__file__ 返回当前程序的相对路径程序本文件名
os.path.abspath('') # 返回path规范化的绝对路径
import os print(os.path.abspath(__file__)) # 执行结果 C:UsersAdministratorPycharmProjectsssSSSday5mod_testpython_packagemod2.py
可以用abspath显示 .. 真实路径
>>> os.path.abspath('..') 'C:\Users' >>> >>> >>> os.path.abspath('.') 'C:\Users\Administrator.QH-20170325TNQR'
os.path.split('') 将path分割成目录和文件名二元组返回
# linux >>> os.path.split('/data/a/1.txt') ('/data/a', '1.txt')
os.path.dirname('') 返回path的目录。
当前绝对路径目录名
C:UsersAdministrator.QH-20170325TNQRPycharmProjectsSSday4
os.path.basename('') 返回路径的文件名
os.path.exists('') 如果path存在,返回True;如果path不存在,返回False
# linux >>> os.path.exists('data/a') False >>> >>> os.path.exists('/data/a') True
os.path.isabs() 如果path是绝对路径,返回True false
windows 有多个/ linux 有/ 开头就是绝对路径 # linux >>> os.path.isabs('/data/') True >>> >>> os.path.isabs('data/') False # windows >>> os.path.isabs(r'c\:') False >>> >>> >>> os.path.isabs(r'ca') False >>> os.path.isabs(r'c:a') False >>> >>> os.path.isabs(r'c:a')
os.path.isfile('') 如果path是一个存在的文件,返回True。否则返回False
# linux >>> os.path.isfile('/data/a/1.txt') True >>> >>> os.path.isfile('/data/a/') False
os.path.isdir('') 如果path是一个存在的目录,则返回True。否则返回False
# linux >>> os.path.isdir('/data/a') True >>> >>> os.path.isdir('/data/a/1.txt') False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
# linux >>> os.path.join('/data/','a','1.txt') '/data/a/1.txt' >>> os.path.join('/data/','a') '/data/a'
print(os.path.getatime('.')) # 返回path所指向的文件或者目录的最后存取时间
1513219594.0753474
print(os.path.getmtime('.')) # 返回path所指向的文件或者目录的最后修改时间
1513219594.0753474
os.path.getsize(path) 返回文件的大小
getsize不能获取文件夹大小
os.getpid() 查看自己pid
如果有父进程 用这个查看父进程pid
os.getppid()