pytho的os、os.path模块给我买提供了很多对文件或者目录进行操作的方法。
os.path 对目录的操作
import os.path
print os.path.abspath('.')
# 获取绝对路径
print os.path.join('aaa','bbb')
# 合并目录。因为路径分隔符是平台相关的
print os.path.split('aaa/bbb/ccc')
#分离路径。总是将把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名
print os.path.split('aaa')
# ('', 'aaa')
print os.path.split('aaa/bbb/ccc/demo.txt')
# ('aaa/bbb/ccc', 'demo.txt')
print os.path.splitext('aaa/bbb/ccc/demo.txt')
# ('aaa/bbb/ccc/demo', '.txt')
os对文件进行操作
os.rename('world222.txt', 'world222.txt')
# 重命名
os.remove('world2.txt')
# 删除文件
os.removedirs('hello')
删除目录时,目录必须为空
# 删除目录
shutil,os模块的扩展版。
说明:shutil的高级拷贝函数copy()
`copy2()`均不能完全拷贝文件的元数据(metadata).
shutil.copyfileobj(fsrc, fdst[, length])
拷贝file-like object.
shutil.copyfile(src, dst)
src、dst必须是带路径的文件名。
src、dst如果一样,那么则会包Error错误
目标路径必须可写,否则IOError
shutil.copy(src, dst)
src dst可以是文件或者目录
shutil.copymode(src, dst)
拷贝mode,就是文件权限
shutil.copystat(src, dst)
拷贝文件权限,最后访问时间,最后修改时间,标记。
shutil.copy(src, dst) 和 shutil.copy2(src, dst)
src 需是文件; dst可以是文件或者是目录。
shutil.copy会拷贝权限信息。shutil.copy2则是shutil.copy(src, dst)和shutil.copystat(src, dst)的结合。
shutil.copytree(src, dst)
拷贝目录,dst必须是还未存在的。dst如果已经存在但是并非一个目录,也会出错。
shutil.rmtree(src, dst)
删除目录。
shutil.move(src, dst)
讲一个目录或者文件移动到另一个文件或者目录。
过滤
我们可以使用for...if...来过滤目录。
print [x for x in os.listdir('.') if os.path.splitext(x)[1] == '.py']
#打印出所有以.py结尾的文件。
print [x for x in os.listdir('.') if os.path.isdir(x)]
# 打印出所有的目录。