当我尝试使用Windows时
webbrowser.open(fname)
或os.startfile(fname)
或os.system ('cmd /c "start %s"' % fname)
我的python脚本正在执行。
如何在默认编辑器中打开它进行编辑(如SQL脚本)
尝试了
import ctypes
shell32 = ctypes.windll.shell32
fname = r'C:\Scripts\delete_records.py'
shell32.ShellExecuteA(0,"open",fname,0,0,5)
它会在C:\Program Files\ibm\gsk8\lib64\C
答案 0 :(得分:2)
默认打开和编辑操作由ShellExecute WinAPI函数处理(操作在HKEY_CLASSES_ROOT
子树中的注册表中定义)。
有几种方法可以从Python脚本访问WinAPI。
使用像pywin32这样的更好的包装器。它比ctypes更安全,但它是非标准的Python模块。即:
import win32api
win32api.ShellExecute(None, "edit", "C:\\Public\\calc.bat", None, "C:\\Public\\", 1)
使用ctypes。它比较棘手并且不控制参数,因此可能导致错误(除非您手动提供结果类型和参数类型)。
import ctypes
ShellExecuteA = ctypes.windll.shell32.ShellExecuteA
ShellExecuteA(None, "edit", "C:\\Public\\calc.bat", None, "C:\\Public\\", 1)
要检查所需文件类型支持哪些操作,请执行以下操作:
regedit.exe
HKEY_CLASSES_ROOT
并选择所需的附加信息,即.py
。在左窗格中阅读(Default)
值 - 它将是类名,即Python.File
。HKEY_CLASSES_ROOT
中打开该类名称子树。它应该包含shell
子树,您可以在其下找到可用的shell操作。对于我和Python脚本,它们是Edit with IDLE
和Edit with Pythonwin
。ShellExecute()
答案 1 :(得分:1)
"""
Open the current file in the default editor
"""
import os
import subprocess
DEFAULT_EDITOR = '/usr/bin/vi' # backup, if not defined in environment vars
path = os.path.abspath(os.path.expanduser(__file__))
editor = os.environ.get('EDITOR', DEFAULT_EDITOR)
subprocess.call([editor, path])