知识点:os,os.path模块关于文件,目录常用的方法
Python是跨平台的语言,也即是说同样的源代码在不同的操作系统不需要修改就可以同样实现。
有了OS模块,我们不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用。
番号 | 函数名 | 使用方法 |
1 | getcwd() | 返回当前工作目录 |
2 | chdir(path) | 改变工作目录 |
3 | listdir(path='.') | 列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录) |
4 | mkdir(path) | 创建单层目录,如该目录已存在抛出异常 |
5 | makedirs(path) | 递归创建多层目录,如该目录已存在抛出异常,注意:'E:\\a\\b'和'E:\\a\\c'并不会冲突 |
6 | remove(path) | 删除文件 |
7 | rmdir(path) | 删除单层目录,如该目录非空则抛出异常 |
8 | removedirs(path) | 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常 |
9 | rename(old, new) | 将文件old重命名为new |
10 | system(command) | 运行系统的命令 |
11 | walk(top) | 遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件]) |
以下是支持路径操作中常用到的一些定义,支持所有平台
番号 | 函数名 | 使用方法 |
1 | os.curdir | 指代当前目录('.') |
2 | os.pardir | 指代上一级目录('..') |
3 | os.sep | 输出操作系统特定的路径分隔符(Win下为'\\',Linux下为'/') |
4 | os.linesep | 当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n') |
5 | os.name | 指代当前使用的操作系统 |
os.path模块中关于路径常用的函数使用方法
番号 | 函数名 | 使用方法 |
1 | basename(path) | 去掉目录路径,单独返回文件名 |
2 | dirname(path) | 去掉文件名,单独返回目录路径 |
3 | join(path1[, path2[, ...]]) | 将path1, path2各部分组合成一个路径名 |
4 | split(path) | 分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在 |
5 | splitext(path) | 分离文件名与扩展名,返回(f_name, f_extension)元组 |
6 | getsize(file) | 返回指定文件的尺寸,单位是字节 |
7 | getatime(file) | 返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算) |
8 | getctime(file) | 返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算) |
9 | getmtime(file) | 返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算) |
以下为函数返回 True 或 False
番号 | 函数名 | 使用方法 |
1 | exists(path) | 判断指定路径(目录或文件)是否存在 |
2 | isabs(path) | 判断指定路径是否为绝对路径 |
3 | isdir(path) | 判断指定路径是否存在且是一个目录 |
4 | isfile(path) | 判断指定路径是否存在且是一个文件 |
5 | islink(path) | 判断指定路径是否存在且是一个符号链接 |
6 | ismount(path) | 判断指定路径是否存在且是一个挂载点 |
7 | samefile(path1, paht2) | 判断path1和path2两个路径是否指向同一个文件 |
打开目录于指定文件
os.startfile (推荐)
可打开外部程序
os.startfile (path [, operation])
这样执行的动作与在Windows Explorer中双击文件相同。在应用程序运行之后, 函数就会返回。
path的值是相对于当前目录而言。operation是一个可选的字符串, 用于指定打开path时执行的动作。它的默认值是 'open',
但也可以将它置为'print’、'edit'、'explore'或'find'[确切的列表跟path的类型有关( Windows)]。
win32process.CreateProcess
参数说明:
CreateProcess(appName, commandLine , processAttributes , threadAttributes , bInheritHandles ,dwCreationFlags , newEnvironment , currentDirectory , startupinfo )
其参数含义如下。
appName:可执行的文件名。
commandLine:命令行参数。
processAttributes:进程安全属性,如果为None,则为默认的安全属性。
threadAttributes:线程安全属性,如果为None,则为默认的安全属性。
bInheritHandles:继承标志。
dwCreationFlags:创建标志。
newEnvironment:创建进程的环境变量。
currentDirectory:进程的当前目录。
startupinfo :创建进程的属性。
import win32process win32process.CreateProcess('c:\\windows\\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO())
推荐使用startfile 和 win32process
Obj='C:\Users\Administrator\Desktop' or 'C:\Users\Administrator\Desktop\chrome.exe' if Obj and os.path.exists(Obj): #文件or 目录存在 if os.path.isfile(Obj): import win32process try: # 打开外部可执行程序 win32process.CreateProcess(Obj, '',None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None ,win32process.STARTUPINFO()) except Exception, e: print(e) else: os.startfile(str(Obj)) # 打开目录 else: # 不存在的目录 print('不存在的目录')