python os 模块

 

提供对操作系统进行调用的接口

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:\Users\Administrator")
>>>
>>> os.getcwd()
'c:\\Users\\Administrator'
>>>

推荐第二种方法

 

os.makedirs()  linux mkdir -p 递归目录

windows

 

>>> os.makedirs(r"c:\a\b\c\d")

 

 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:\a\b\c\d")  

# 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\b")
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\b")

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

# 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下为"\t\n",Linux下为"\n"
# windows
>>> os.linesep
'\r\n'

# linux
>>> os.linesep
'\n'

 

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:\Users\Administrator\PycharmProjects\ss\SSS\day5\mod_test\python_package\mod2.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:\Users\Administrator.QH-20170325TNQR\PycharmProjects\SS\day4


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'c\a')
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()

 

 

 

posted @ 2017-12-19 22:49  minger_lcm  阅读(297)  评论(0编辑  收藏  举报