1

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)]
# 打印出所有的目录。

Char
506 声望33 粉丝

hello world