Python模块之os

os模块

1)常见功能

os.getcwd()                        # 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")                # 改变当前脚本工作目录;相当于shell下cd
os.curdir                          # 返回当前目录: ('.')
os.pardir                          # 获取当前目录的父目录字符串名:('..')
os.makedirs('dir1/dir2')           # 可生成多层递归目录
os.removedirs('dirname1')          # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')                # 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')                # 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')              # 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()                        # 删除一个文件
os.rename("oldname","new")         # 重命名文件/目录
os.stat('path/filename')           # 获取文件/目录信息
os.sep                             # 操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep                         # 当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep                         # 用于分割文件路径的字符串
os.name                            # 字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")          # 运行shell命令,直接显示
os.environ                         # 获取系统环境变量
os.path.split(filename)         #将文件路径和文件名分割(会将最后一个目录作为文件名而分离)  
os.path.splitext(filename)      #将文件路径和文件扩展名分割成一个元组  
os.path.dirname(filename)       #返回文件路径的目录部分    (重要)
os.path.basename(filename)      #返回文件路径的文件名部分  
os.path.join(dirname,basename)  #将文件路径和文件名凑成完整文件路径  (重要)
os.path.abspath(name)           #获得绝对路径  (重要)
os.path.splitunc(path)          #把路径分割为挂载点和文件名  
os.path.normpath(path)          #规范path字符串形式  
os.path.exists()                #判断文件或目录是否存在  
os.path.isabs()                 #如果path是绝对路径,返回True  
os.path.realpath(path)          #返回path的真实路径  
os.path.relpath(path[, start])  #从start开始计算相对路径     
os.path.normcase(path)          #转换path的大小写和斜杠  
os.path.isdir()                 #判断name是不是一个目录,name不是目录就返回false  
os.path.isfile()                #判断name是不是一个文件,不存在返回false  
os.path.islink()                #判断文件是否连接文件,返回boolean  
os.path.ismount()               #指定路径是否存在且为一个挂载点,返回boolean  
os.path.samefile()              #是否相同路径的文件,返回boolean  
os.path.getatime()              #返回最近访问时间 浮点型  
os.path.getmtime()              #返回上一次修改时间 浮点型  
os.path.getctime()              #返回文件创建时间 浮点型  
os.path.getsize()               #返回文件大小 字节单位  
os.path.commonprefix(list)      #返回list(多个路径)中,所有path共有的最长的路径  
os.path.lexists                 #路径存在则返回True,路径损坏也返回True  
os.path.expanduser(path)        #把path中包含的"~"和"~user"转换成用户目录  
os.path.expandvars(path)        #根据环境变量的值替换path中包含的”$name”和”${name}”  
os.path.sameopenfile(fp1, fp2)  #判断fp1和fp2是否指向同一文件  
os.path.samestat(stat1, stat2)  #判断stat tuple stat1和stat2是否指向同一个文件  
os.path.splitdrive(path)        #一般用在windows下,返回驱动器名和路径组成的元组  
os.path.walk(path, visit, arg)  #遍历path,给每个path执行一个函数详细见手册  
os.path.supports_unicode_filenames() # 设置是否支持unicode路径名

更多用法:https://docs.python.org/2/library/os.html?highlight=os#module-os

应用案例:

import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

print(__file__)
# 当前文件的完整路径 结果:E:/开源中国/192.168.21.140/trunk/Python/scripts/S13/s13day05/Atm/Atm/bin/admin.py

print(os.path.abspath(__file__))
# 当前文件的绝对路径 结果:E:\开源中国\192.168.21.140\trunk\Python\scripts\S13\s13day05\Atm\Atm\bin\admin.py

print(os.path.dirname(os.path.abspath(__file__)))
# 当前文件的绝对路径,不包含文件名 结果:E:\开源中国\192.168.21.140\trunk\Python\scripts\S13\s13day05\Atm\Atm\bin

print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
# 获取到程序的根目录 结果:E:\开源中国\192.168.21.140\trunk\Python\scripts\S13\s13day05\Atm\Atm

2)os.walk的用法与举例

语法:os.walk(top, topdown=True, onerror=None, followlinks=False)
可以得到一个三元tupple(dirpath, dirnames, filenames),
第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
dirpath 是一个string,代表目录的路径,
dirnames 是一个list,包含了dirpath下所有子目录的名字。
filenames 是一个list,包含了非目录文件的名字。
这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name).

应用场景:
1)遍历目录下所有文件替换文件内容
2)目录下文件批量重命名
案例:通过for循环即可完成目录的递归

[root@saltstack ~]# cat os_walk.py 
import os

filedir='./sadoc'

def ccc():
    for root,dirs,files in os.walk(filedir):
        for dir in dirs:
            print(os.path.join(root,dir))
        for file in files:
            print(os.path.join(root,file))
#    os.system("pause")

if __name__ == '__main__':
   ccc()
[root@saltstack ~]# python os_walk.py
./sadoc/.svn
./sadoc/tags
./sadoc/branch
./sadoc/trunk
./sadoc/.svn/text-base
./sadoc/.svn/tmp
./sadoc/.svn/prop-base
./sadoc/.svn/props
./sadoc/.svn/entries
./sadoc/.svn/tmp/text-base
./sadoc/.svn/tmp/prop-base
./sadoc/.svn/tmp/props
./sadoc/tags/.svn
./sadoc/tags/.svn/text-base
./sadoc/tags/.svn/tmp
./sadoc/tags/.svn/prop-base
./sadoc/tags/.svn/props
./sadoc/tags/.svn/entries
./sadoc/tags/.svn/tmp/text-base
./sadoc/tags/.svn/tmp/prop-base
./sadoc/tags/.svn/tmp/props
./sadoc/branch/.svn
./sadoc/branch/.svn/text-base
./sadoc/branch/.svn/tmp
./sadoc/branch/.svn/prop-base
./sadoc/branch/.svn/props
./sadoc/branch/.svn/entries
./sadoc/branch/.svn/tmp/text-base
./sadoc/branch/.svn/tmp/prop-base
./sadoc/branch/.svn/tmp/props
./sadoc/trunk/.svn
./sadoc/trunk/.svn/text-base
./sadoc/trunk/.svn/tmp
./sadoc/trunk/.svn/prop-base
./sadoc/trunk/.svn/props
./sadoc/trunk/.svn/entries
./sadoc/trunk/.svn/tmp/text-base
./sadoc/trunk/.svn/tmp/prop-base
./sadoc/trunk/.svn/tmp/props
posted @ 2016-08-01 10:58  每天进步一点点!!!  阅读(247)  评论(0编辑  收藏  举报