У меня есть скрипт Python, который использует подпроцесс:
import subprocess
print "Running stuff"
subprocess.check_call(["do_stuff.bat"])
print "Stuff run"
Если это было названо blah.py, и я запускаю (из командной строки):
python blah.py
Я получу вывод из do_stuff.bat (или того, что я запускаю).
Если это выполняется как:
blah.py
Тогда я не получаю вывод из do_stuff.bat, только операторы печати.
Пока видел на Windows Server 2003. Python версии 2.5.2 (застрял там по разным причинам). Глядя на действие связанного типа файла, я вижу:
Python.File="C:\Python25\python.exe" "%1" %*
Так кто-нибудь может объяснить разницу?
C:\Python25\python.exe blah.py
?python blah.py
найдет python вPATH
, аblah.py
будет использовать ассоциацию файлов, чтобы найти программу для использования. Они не обязательно найдут ту же программу. Помещениеprint sys.version_info
в начало вашего скрипта также может помочь при отладке. - person Peter Graham   schedule 19.08.2011ftype
не скажет всей правды, так как сообщает только то, что находится вHKEY_LOCAL_MACHINE\Software\Classes
, что может быть переопределено записями вHKEY_CURRENT_USER\Software\Classes
. См. мой ответ на где в реестре Windows хранит, какой программой открывать определенные типы файлов? - person Piotr Dobrogost   schedule 20.09.2011reg query HKCU\Software\Classes\Python.File\shell\open\command /ve
иreg query HKLM\Software\Classes\Python.File\shell\open\command /ve
, чтобы получить полное представление. - person Piotr Dobrogost   schedule 23.04.2012