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
出处:http://www.cnblogs.com/madsnotes/
声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。