不断学习Python,为她的简练迷倒。偶尔记记某个模块的函数,尝试在工作中使用他们,让Pythonic德理念在自己身上潜移默化,这就是学习一门语言的快乐。今天说说os.path模块的常用函数:
一 分隔:
1 basename() #去掉目录路径,返回文件名
#用法如:
>>>os.path.basename("c:\temp\test.txt")
'test.txt'
2 dirname() #去掉文件名,返回目录路径
#用法如:
>>>os.path.dirname("c:\temp\test.txt")
'c:\\temp'
3 join() #将分离的各部分组合成一个路径名
#用法如:
>>>os.path.join("c:\temp\","test.txt")
'c:\\temp\\test.txt'
4 split() #返回 目录路径和文件名的元组
>>>os.path.split("c:\temp\","test.txt")
('c:\\temp','test.txt')
5 splitdrive() #返回 驱动符号和路径字符元组
>>>os.path.splitdrive("c:\temp\","test.txt")
('c:','\\temp\\test.txt')
6 splitext() #返回文件名和扩展名元组
>>>os.path.splitext("test.txt")
('test','txt')
二 信息:
1 getatime() #返回文件最近的访问时间
>>>os.path.getatime("c:\temp\test.txt")
1281154109.6167181
#这里的时间以秒为单位,并且从1970年1月1日开始算起。为了获取以天为单位的最后访问日期,可以使用下列代码:
import time # time.time()返回当前时间
age_in_days = (time.time()-time_of_last_access)/(60*60*24)
2 getctime() #返回文件的创建时间
3 getmtime() #返回文件的创建时间
4 getsize() #返回文件的大小 单位为字节
>>>os.path.getsize("c:\temp\test.txt")
1281L
三 查询:
1 exists() #指定路径(文件或目录)是否存在
>>>os.path.exists("c:\temp\test.txt")
True
2 isabs() #指定路径是否为绝对路径
3 isdir() #指定路径是否存在且为一个目录
4 isfile() #指定的路径是否为一个文件
5 samefile() #两个路径名是否指向同一个文件
ps:
1.
重命名:os.rename(old, new)
2.
删除:os.remove(
file
)
3.
列出目录下的文件 :os.listdir(path)
4.
获取当前工作目录:os.getcwd()
5.
改变工作目录:os.chdir(newdir)
6.
创建多级目录:os.makedirs(r
"c:\python \test"
)
7.
创建单个目录:os.mkdir(
"test"
)
8.
删除多个目录:os.removedirs(r
"c:\python"
)
#删除所给路径最后一个目录下所有空目录。
9.
删除单个目录:os.rmdir(
"test"
)
10.
获取文件属性:os.stat(
file
)
11.
修改文件权限与时间戳:os.chmod(
file
)
12.
执行操作系统命令:os.system(
"dir"
)
13.
启动新进程:os.
exec
(), os.execvp()
14.
在后台执行程序:osspawnv()
15.
终止当前进程:os.exit(), os._exit()
16.
分离文件名:os.path.split(r
"c:\python\hello.py"
)
-
-
> (
"c:\\python"
,
"hello.py"
)
17.
分离扩展名:os.path.splitext(r
"c:\python\hello.py"
)
-
-
> (
"c:\\python\\hello"
,
".py"
)
18.
获取路径名:os.path.dirname(r
"c:\python\hello.py"
)
-
-
>
"c:\\python"
19.
获取文件名:os.path.basename(r
"r:\python\hello.py"
)
-
-
>
"hello.py"
20.
判断文件或目录是否存在:os.path.exists(r
"c:\python\hello.py"
)
-
-
>
True
21.
判断是否是绝对路径:os.path.isabs(r
".\python\"
)
-
-
>
False
22.
判断是否是目录:os.path.isdir(r
"c:\python"
)
-
-
>
True
23.
判断是否是文件:os.path.isfile(r
"c:\python\hello.py"
)
-
-
>
True
24.
判断是否是链接文件:os.path.islink(r
"c:\python\hello.py"
)
-
-
>
False
25.
获取文件大小:os.path.getsize(filename)
26.
搜索目录下的所有文件:os.path.walk()
- os.sep 可以取代操作系统特定的路径分隔符。windows下为'\\'
- os.name 字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
- os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径
- os.getenv() 获取一个环境变量,如果没有返回none
- os.putenv(key, value) 设置一个环境变量值
- os.listdir(path) 返回指定目录下的所有文件和目录名
- os.remove(path) 函数用来删除一个文件
- os.system(command) 函数用来运行shell命令
- os.linesep 字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n' 而Mac使用 '\r'
- os.path.split(path) 函数返回一个路径的目录名和文件名
- os.path.isfile() 和os.path.isdir()函数分别检验给出的路径是一个文件还是目录
- os.path.exists() 函数用来检验给出的路径是否真地存在
- os.curdir 返回当前目录('.')
- os.mkdir(path) 创建一个目录
- os.makedirs(path) 递归的创建目录
- os.chdir(dirname) 改变工作目录到dirname
- os.path.getsize(name) 获得文件大小,如果name是目录返回0L
- os.path.abspath(name) 获得绝对路径
- os.path.normpath(path) 规范path字符串形式
- os.path.splitext() 分离文件名与扩展名
- os.path.join(path,name) 连接目录与文件名或目录
- os.path.basename(path) 返回文件名
- os.path.dirname(path) 返回文件路径
- os.walk(top,topdown=True,onerror=None) 遍历迭代目录
- os.rename(src, dst) 重命名file或者directory src到dst 如果dst是一个存在的directory, 将抛出OSError. 在Unix, 如果dst在存且是一个file, 如果用户有权限的话,它将被安静的替换. 操作将会失败在某些Unix 中如果src和dst在不同的文件系统中. 如果成功, 这命名操作将会是一个原子操作(这是POSIX 需要). 在 Windows上, 如果dst已经存在, 将抛出OSError,即使它是一个文件. 在unix,Windows中有效。
- os.renames(old, new) 递归重命名文件夹或者文件。像rename()
- # shutil 模块
- shutil.copyfile( src, dst) 从源src复制到dst中去。当然前提是目标地址是具备可写权限。抛出的异常信息为IOException. 如果当前的dst已存在的话就会被覆盖掉
- shutil.move( src, dst) 移动文件或重命名
- shutil.copymode( src, dst) 只是会复制其权限其他的东西是不会被复制的
- shutil.copystat( src, dst) 复制权限、最后访问时间、最后修改时间
- shutil.copy( src, dst) 复制一个文件到一个文件或一个目录
- shutil.copy2( src, dst) 在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西
- shutil.copy2( src, dst) 如果两个位置的文件系统是一样的话相当于是rename操作,只是改名;如果是不在相同的文件系统的话就是做move操作
- shutil.copytree( olddir, newdir, True/Flase)
- 把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接
- shutil.rmtree( src) 递归删除一个目录以及目录内的所有内容