首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从python脚本中在默认编辑器中打开Python文件

问如何从python脚本中在默认编辑器中打开Python文件
EN

Stack Overflow用户
提问于 2015-03-16 20:10:39
回答 3查看 1.6K关注 0票数 2

当我在Windows webbrowser.open(fname)、os.startfile(fname)或os.system ('cmd /c "start %s"' % fname)上试用时,我的python脚本就会被执行。

如何在默认编辑器中打开它以进行编辑(如SQL脚本)

编辑:

代码语言:javascript
复制
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上打开文件资源管理器

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-03-16 20:41:44

默认的打开和编辑操作由ShellExecute WinAPI函数处理(操作在HKEY_CLASSES_ROOT子树的注册表中定义)。

有几种方法可以从访问WinAPI。

  1. 使用更好的包装,如pywin32。它比ctype安全,但它是非标准的Python模块。即: 导入win32api win32api.ShellExecute(无,“编辑”,"C:\Public\calc.bat",无,"C:\Public\",1)
  2. 使用C类型。它更复杂,不控制参数,因此可能导致错误(除非您手动提供结果类型和参数类型)。 导入ctypes =cypes.winll.shell 32.ShellExecuteA ShellExecuteA (无,“编辑”,"C:\Public\calc.bat",无,"C:\Public\",1)

若要检查所需文件类型支持哪些操作,请执行以下操作:

  1. 运行regedit.exe
  2. 转到HKEY_CLASSES_ROOT并选择所需的扩展,即.py。读取左窗格上的(Default)值--它将是类名,即Python.File。
  3. 在HKEY_CLASSES_ROOT中打开类名子树。它应该包含shell子树,在它下面可以找到可用的shell操作。对于我和Python来说,它们是Edit with IDLE和Edit with Pythonwin。
  4. 将这些值作为ShellExecute()的第二个参数传递
票数 2
EN

Stack Overflow用户

发布于 2015-03-16 20:24:44

代码语言:javascript
复制
"""
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])
票数 2
EN

Stack Overflow用户

发布于 2022-11-20 20:40:42

根据os.startfile的文档,您可以定义要执行的操作。所以os.startfile(fname,operation='edit')应该为你想要的而工作。另见这个答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29086063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档