python文本编辑器怎么运行,从命令行运行Python脚本在默认文本编辑器中打开脚本,而不是执行脚本...

I have files with .py extension associated with Python interpreter. However when I type name of such a file at the command line and press ENTER the file is being opened in the default text editor (Notepad++) instead of being run with the associated Python interpreter. Why?

Z:\1>where python

c:\Program Files\Python\2.7\python.exe

Z:\1>reg query HKCR\.py /ve

HKEY_CLASSES_ROOT\.py

(Default) REG_SZ Python.File

Z:\1>reg query HKCR\Python.File\shell\open\command /ve

HKEY_CLASSES_ROOT\Python.File\shell\open\command

(Default) REG_SZ c:\Program Files\Python\2.7\python.exe "%1" %*

Z:\1>echo %PATHEXT%

.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW

Z:\1>type a.py

from __future__ import print_function; import sys; print(sys.executable); print(sys.version)

Z:\1>a.py

I'm on Windows Vista x64 using Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32

UPDATE

After deleting HKEY_CLASSES_ROOT\Unknown\shell\notepad++\command key (I created this key in the past in my quest to associate files without extension with Notepad++ - see How to set the default program for opening files without an extension in Windows?) which had value of C:\Program Files (x86)\Notepad++\notepad++ %1 I get this error:

This file does not have a program associated with it for performing

this action. Create an association in the Set Associations control

panel.

UPDATE 2

To display all registry keys used normally by system to find out what program is associated with .py extension I run the following batch file (python_assoc.query.bat):

@echo off

if "%~1" == "details" (

set keypath=HKLM\Software\Classes

echo ----- HKEY_LOCAL_MACHINE -----

call :query

set keypath=HKCU\Software\Classes

echo.

echo ----- HKEY_CURRENT_USER -----

call :query

) else (

set keypath=HKCR

echo ----- HKEY_CLASSES_ROOT -----

call :query

)

goto end

:query

reg query %keypath%\.py /ve

reg query %keypath%\.pyw /ve

reg query %keypath%\.pyc /ve

reg query %keypath%\.pyo /ve

reg query %keypath%\Python.File\shell\open\command /ve

reg query %keypath%\Python.NoConFile\shell\open\command /ve

reg query %keypath%\Python.CompiledFile\shell\open\command /ve

goto :eof

:end

set keypath=

OUTPUT

Z:\1>python_assoc.query.bat details

----- HKEY_LOCAL_MACHINE -----

HKEY_LOCAL_MACHINE\Software\Classes\.py

(Default) REG_SZ Python.File

HKEY_LOCAL_MACHINE\Software\Classes\.pyw

(Default) REG_SZ Python.NoConFile

HKEY_LOCAL_MACHINE\Software\Classes\.pyc

(Default) REG_SZ Python.CompiledFile

HKEY_LOCAL_MACHINE\Software\Classes\.pyo

(Default) REG_SZ Python.CompiledFile

HKEY_LOCAL_MACHINE\Software\Classes\Python.File\shell\open\command

(Default) REG_SZ c:\Program Files\Python\2.7\python.exe "%1" %*

HKEY_LOCAL_MACHINE\Software\Classes\Python.NoConFile\shell\open\command

(Default) REG_SZ c:\Program Files\Python\2.7\pythonw.exe "%1" %*

HKEY_LOCAL_MACHINE\Software\Classes\Python.CompiledFile\shell\open\command

(Default) REG_SZ c:\Program Files\Python\2.7\python.exe "%1" %*

----- HKEY_CURRENT_USER -----

ERROR: The system was unable to find the specified registry key or value.

ERROR: The system was unable to find the specified registry key or value.

ERROR: The system was unable to find the specified registry key or value.

ERROR: The system was unable to find the specified registry key or value.

ERROR: The system was unable to find the specified registry key or value.

ERROR: The system was unable to find the specified registry key or value.

ERROR: The system was unable to find the specified registry key or value.

I also run Process Monitor (thanks Maximus) to see what registry keys are being read when running a.py from command line. I have set filter to include only pid of cmd.exe used to run a.py file and to exclude operations of type RegCloseKey.

"Operation","Path","Result","Detail"

"RegOpenKey","HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers","NAME NOT FOUND","Desired Access: Query Value"

"RegOpenKey","HKLM\SOFTWARE\Microsoft\WINDOWS NT\CURRENTVERSION\AppCompatFlags\Custom\a.py","NAME NOT FOUND","Desired Access: Query Value"

"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer","SUCCESS","Desired Access: Query Value"

"RegQueryValue","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\MaximizeApps","NAME NOT FOUND","Length: 144"

"RegOpenKey","HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer","SUCCESS","Desired Access: Query Value"

"RegQueryValue","HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\MaximizeApps","NAME NOT FOUND","Length: 144"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\Drive\shellex\FolderExtensions","NAME NOT FOUND","Desired Access: Enumerate Sub Keys"

"RegOpenKey","HKCR\Drive\shellex\FolderExtensions","SUCCESS","Desired Access: Enumerate Sub Keys"

"RegQueryKey","HKCR\Drive\shellex\FolderExtensions","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\Drive\shellex\FolderExtensions","NAME NOT FOUND","Desired Access: Maximum Allowed"

"RegEnumKey","HKCR\Drive\shellex\FolderExtensions","SUCCESS","Index: 0, Name: {fbeb8a05-beee-4442-804e-409d6c4515e9}"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}","NAME NOT FOUND","Desired Access: Query Value"

"RegOpenKey","HKCR\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}","SUCCESS","Desired Access: Query Value"

"RegQueryKey","HKCR\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}","NAME NOT FOUND","Desired Access: Maximum Allowed"

"RegQueryValue","HKCR\Drive\shellex\FolderExtensions\{fbeb8a05-beee-4442-804e-409d6c4515e9}\DriveMask","SUCCESS","Type: REG_DWORD, Length: 4, Data: 32"

"RegEnumKey","HKCR\Drive\shellex\FolderExtensions","NO MORE ENTRIES","Index: 1, Length: 288"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Query Value"

"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Query Value"

"RegQueryKey","HKCR\.py","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Maximum Allowed"

"RegQueryValue","HKCR\.py\(Default)","SUCCESS","Type: REG_SZ, Length: 26, Data: Python.File "

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\.py\OpenWithProgids","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\.py\OpenWithProgids","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","SUCCESS","Desired Access: Read"

"RegQueryKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","SUCCESS","Query: Cached, SubKeys: 0, Values: 2"

"RegEnumValue","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","SUCCESS","Index: 0, Length: 220"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\Python.File","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\Python.File","SUCCESS","Desired Access: Read"

"RegEnumValue","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","SUCCESS","Index: 1, Length: 220"

"RegEnumValue","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\OpenWithProgids","NO MORE ENTRIES","Index: 2, Length: 220"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Read"

"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py","SUCCESS","Desired Access: Read"

"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py","SUCCESS","Desired Access: Read"

"RegOpenKey","HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\UserChoice","NAME NOT FOUND","Desired Access: Query Value"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\Python.File ","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\Python.File ","NAME NOT FOUND","Desired Access: Read"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Read"

"RegQueryKey","HKCR\.py","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\.py\shell","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\.py\shell","NAME NOT FOUND","Desired Access: Read"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Read"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\Unknown","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\Unknown","NAME NOT FOUND","Desired Access: Read"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\SystemFileAssociations\.py","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\SystemFileAssociations\.py","NAME NOT FOUND","Desired Access: Read"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Query Value"

"RegOpenKey","HKCR\.py","SUCCESS","Desired Access: Query Value"

"RegQueryKey","HKCR\.py","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\.py","NAME NOT FOUND","Desired Access: Maximum Allowed"

"RegQueryValue","HKCR\.py\PerceivedType","NAME NOT FOUND","Length: 144"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\SystemFileAssociations\.py","NAME NOT FOUND","Desired Access: Query Value"

"RegOpenKey","HKCR\SystemFileAssociations\.py","NAME NOT FOUND","Desired Access: Query Value"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\*","SUCCESS","Desired Access: Read"

"RegQueryKey","HKCU\Software\Classes\*","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\*\shell","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\*\shell","SUCCESS","Desired Access: Read"

"RegQueryKey","HKCR\*\shell","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\*\shell","NAME NOT FOUND","Desired Access: Maximum Allowed"

"RegQueryValue","HKCR\*\shell\(Default)","NAME NOT FOUND","Length: 144"

"RegQueryKey","HKCR\*\shell","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\*\shell\open","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\*\shell\open","NAME NOT FOUND","Desired Access: Read"

"RegQueryKey","HKCU\Software\Classes","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\AllFilesystemObjects","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\AllFilesystemObjects","SUCCESS","Desired Access: Read"

"RegQueryKey","HKCR\AllFilesystemObjects","SUCCESS","Query: Name"

"RegOpenKey","HKCU\Software\Classes\AllFilesystemObjects\shell","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCR\AllFilesystemObjects\shell","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKLM\Software\Microsoft\Windows\CurrentVersion\SideBySide","SUCCESS","Desired Access: Read"

"RegQueryValue","HKLM\COMPONENTS\PreferExternalManifest","NAME NOT FOUND","Length: 20"

"RegOpenKey","HKLM\Software\Microsoft\Windows\CurrentVersion\SideBySide\AssemblyStorageRoots","REPARSE","Desired Access: Enumerate Sub Keys"

"RegOpenKey","HKLM\COMPONENTS\AssemblyStorageRoots","NAME NOT FOUND","Desired Access: Enumerate Sub Keys"

"RegOpenKey","HKLM\Software\Microsoft\DirectUI","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKLM\Software\Microsoft\CTF\TIP\{0000897b-83df-4b96-be07-0fb58b01c4a4}\LanguageProfile\0x00000000\{0001bea3-ed56-483d-a2e2-aeae25577436}","SUCCESS","Desired Access: Read"

"RegQueryValue","HKLM\SOFTWARE\Microsoft\CTF\TIP\{0000897b-83df-4b96-be07-0fb58b01c4a4}\LanguageProfile\0x00000000\{0001bea3-ed56-483d-a2e2-aeae25577436}\Enable","SUCCESS","Type: REG_DWORD, Length: 4, Data: 1"

"RegOpenKey","HKCU","SUCCESS","Desired Access: Read"

"RegOpenKey","HKCU\Keyboard Layout\Toggle","SUCCESS","Desired Access: Read"

"RegQueryValue","HKCU\Keyboard Layout\Toggle\Language Hotkey","SUCCESS","Type: REG_SZ, Length: 4, Data: 3"

"RegQueryValue","HKCU\Keyboard Layout\Toggle\Layout Hotkey","SUCCESS","Type: REG_SZ, Length: 4, Data: 3"

"RegOpenKey","HKCU","SUCCESS","Desired Access: Read"

"RegOpenKey","HKCU\SOFTWARE\Microsoft\CTF\LangBarAddIn","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKLM\SOFTWARE\Microsoft\CTF\LangBarAddIn","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKCU","SUCCESS","Desired Access: Read"

"RegOpenKey","HKCU\Software\Microsoft\CTF\DirectSwitchHotkeys","SUCCESS","Desired Access: Read"

"RegEnumKey","HKCU\Software\Microsoft\CTF\DirectSwitchHotkeys","NO MORE ENTRIES","Index: 0, Length: 288"

"RegOpenKey","HKLM\SOFTWARE\Microsoft\CTF\KnownClasses","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKLM\SOFTWARE\Microsoft\CTF\KnownClasses","NAME NOT FOUND","Desired Access: Read"

"RegOpenKey","HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes","SUCCESS","Desired Access: Read"

"RegQueryValue","HKLM\SOFTWARE\Microsoft\WINDOWS NT\CURRENTVERSION\FontSubstitutes\Segoe UI","NAME NOT FOUND","Length: 144"

"RegOpenKey","HKLM\SOFTWARE\Microsoft\CTF\KnownClasses","NAME NOT FOUND","Desired Access: Read"

解决方案

In general, I'd make sure the association isn't being overridden by settings for the current user:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\UserChoice

HKCU\Software\Classes\.py

HKCU\Software\Classes\Python.File

However, as I read the Process Monitor output in your update, it doesn't appear that any of these HKCU keys are defined on your system.

My next step would be to run the following in an elevated cmd console:

> assoc .PY=Python.File

> ftype Python.File=c:\Program Files\Python\2.7\python.exe "%1" %*

As far as I know, this sets the system association in HKLM\Software\Classes and does nothing else. Based on the information in your question, it seems this was already set correctly. So I don't know what either assoc or ftype did to fix the problem.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值