Python打开外部文件有很多方法,
os.popen
打开外部程序,但发现只能打开文件所在目录的文件
os.system
可打开外部文件
os.system(command)
command 要执行的命令,相当于在Windows的cmd窗口中输入的命令。如果要向程序或者脚本传递参数,可以使用空格分隔程序及多个参数。
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 :创建进程的属性。 |
使用:
1 import win32process 2 win32process.CreateProcess('c:\windows\notepad.exe', '', None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None , win32process.STARTUPINFO())
----------------------
推荐使用startfile 和 win32process
1 Obj='C:UsersAdministratorDesktop' or 'C:UsersAdministratorDesktopchrome.exe' 2 if Obj and os.path.exists(Obj): #文件or 目录存在 3 if os.path.isfile(Obj): 4 import win32process 5 try: # 打开外部可执行程序 6 win32process.CreateProcess(Obj, '',None , None , 0 ,win32process. CREATE_NO_WINDOW , None , None ,win32process.STARTUPINFO()) 7 except Exception, e: 8 print(e) 9 else: 10 os.startfile(str(Obj)) # 打开目录 11 12 else: # 不存在的目录 13 print('不存在的目录')