[Python] विंडोज शैल से निष्पादित पायथन कार्यक्रमों के लिए कमांड लाइन तर्क पास नहीं कर रहा है



Answers

मेरी सेटिंग अभी तक एक और रजिस्ट्री कुंजी, HKEY_CLASSES_ROOT\py_auto_file । उल्लिखित अन्य कुंजियां भी मौजूद थीं, लेकिन विंडोज किसी कारण से इसका इस्तेमाल कर रही थीं।

Question

मुझे पाइथन प्रोग्राम में पास किए गए कमांड लाइन तर्क प्राप्त करने में समस्या हो रही है यदि मैं उन्हें Windows कमांड शैल से निष्पादन योग्य आदेशों के रूप में सीधे निष्पादित करने का प्रयास करता हूं। उदाहरण के लिए, यदि मेरे पास यह प्रोग्राम है (test.py):

import sys
print "Args: %r" % sys.argv[1:]

और निष्पादित करें:

>test foo
Args: []

इसकी तुलना में:

>python test.py foo
Args: ['foo']

मेरी विन्यास में है:

PATH=...;C:\python25;...
PATHEXT=...;.PY;....

>assoc .py
.py=Python.File

>ftype | grep Python
Python.CompiledFile="C:\Python25\python.exe" "%1" %*
Python.File="C:\Python25\python.exe" "%1" %*
Python.NoConFile="C:\Python25\pythonw.exe" "%1" %*



मैंने python.exe और py_auto_file साथ सभी रजिस्ट्री कुंजियों की python.exe और उन्हें मेरे वर्तमान पायथन इंस्टॉलेशन को इंगित किया, जिसमें अंत में वें %* शामिल हैं जो तर्क पास करते हैं। वे काफी कम थे:

  • HKEY_CLASSES_ROOT \ आवेदन \ python.exe \ खोल \ खुला \ आदेश:

    • संगठन: "सी: \ miniconda3 \ python.exe" "% 1" "% *"
    • बदल गया: "सी: \ पायथन 35 \ python.exe" "% 1" "% *"
  • HKEY_CLASSES_ROOT \ py_auto_file \ खोल \ खुला \ आदेश

    • संगठन: "सी: \ प्रोग्राम फ़ाइलें \ सब्लिम पाठ 3 \ sublime_text.exe" "% 1"
    • बदल गया: "सी: \ पायथन 35 \ python.exe" "% 1" "% *"
  • HKEY_CURRENT_USER \ Software \ Classes \ py_auto_file \ शैल \ खुला \ आदेश

    • संगठन: "सी: \ पायथन 35 \ python.exe" "% 1" "% *"
  • HKEY_USERS \ S-1-5-21-2621213409-1291422344-4183577876-2165 \ Software \ Classes \ py_auto_file \ शैल \ खुला \ आदेश

    • संगठन: "सी: \ पायथन 35 \ python.exe" "% 1" "% *"
  • HKEY_USERS \ एस 1-5-21-2621213409-1291422344-4183577876-2165_Classes \ py_auto_file \ खोल \ खुला \ आदेश

    • संगठन: "सी: \ पायथन 35 \ python.exe" "% 1" "% *"
  • HKEY_CLASSES_ROOT \ आवेदन \ pythonw.exe \ खोल \ खुला \ आदेश

    • संगठन: "सी: \ Python34 \ pythonw.exe" "% 1"
    • बदल गया: "सी: \ पायथन 35 \ pythonw.exe" "% 1" "% *"
  • HKEY_CURRENT_USER \ Software \ Classes \ आवेदन \ python.exe \ शैल \ खुला \ आदेश

    • संगठन: "सी: \ पायथन 35 \ python.exe" "% 1" "% *"

लेकिन उसने मेरे लिए काम नहीं किया। मुझे अपना डिफ़ॉल्ट पायथन एप्लिकेशन भी बदलना पड़ा।

जैसा कि कोई देख सकता है कि मेरे पास 3 पायथन संस्करण स्थापित हैं। यह देखना असंभव है कि यहां कौन सा है, इसलिए मैंने उन सभी तीनों को अपने डिफ़ॉल्ट पायथन एप्लिकेशन के रूप में आजमाया। आखिर में मैं इन तीनों में से एक के साथ अपनी स्क्रिप्ट तर्क प्राप्त करने में सक्षम था।




इसे मेरे लिए काम करने के लिए, मुझे रजिस्ट्री पथ का उपयोग करना पड़ा:

HKEY_CLASSES_ROOT\py_auto_file\shell\open\command

और एक %* जोड़ा




पाइथन 3.6, 2.7 और एनाकोंडा 3 के लिए ठीक करने के लिए .reg फ़ाइलें यहां दी गई हैं:

अजगर-3.6.0.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.py]
@="Python.File"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\.pyc]
@="Python.CompiledFile"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\.pyw]
@="Python.NoConFile"
"Content Type"="text/plain"


[HKEY_CLASSES_ROOT\py_auto_file]

[HKEY_CLASSES_ROOT\py_auto_file\DefaultIcon]
@="C:\\Python36\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\py_auto_file\shell\open\command]
@="\"C:\\Python36\\python.exe\" \"%1\" %*"


[HKEY_CLASSES_ROOT\Python.File]
@="Python File"

[HKEY_CLASSES_ROOT\Python.File\DefaultIcon]
@="C:\\Python36\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\Python.File\shell\open\command]
@="\"C:\\Python36\\python.exe\" \"%1\" %*"


[HKEY_CLASSES_ROOT\Python.CompiledFile]
@="Compiled Python File"

[HKEY_CLASSES_ROOT\Python.CompiledFile\DefaultIcon]
@="C:\\Python36\\DLLs\\pyc.ico"

[HKEY_CLASSES_ROOT\Python.CompiledFile\shell\open\command]
@="\"C:\\Python36\\python.exe\" \"%1\" %*"


[HKEY_CLASSES_ROOT\Python.NoConFile]
@="Python File (no console)"

[HKEY_CLASSES_ROOT\Python.NoConFile\DefaultIcon]
@="C:\\Python36\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\Python.NoConFile\shell\open\command]
@="\"C:\\Python36\\python.exe\" \"%1\" %*"

अजगर-2.7.0.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.py]
@="Python.File"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\.pyc]
@="Python.CompiledFile"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\.pyw]
@="Python.NoConFile"
"Content Type"="text/plain"


[HKEY_CLASSES_ROOT\py_auto_file]

[HKEY_CLASSES_ROOT\py_auto_file\DefaultIcon]
@="C:\\Python27\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\py_auto_file\shell\open\command]
@="\"C:\\Python27\\python.exe\" \"%1\" %*"


[HKEY_CLASSES_ROOT\Python.File]
@="Python File"

[HKEY_CLASSES_ROOT\Python.File\DefaultIcon]
@="C:\\Python27\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\Python.File\shell\open\command]
@="\"C:\\Python27\\python.exe\" \"%1\" %*"


[HKEY_CLASSES_ROOT\Python.CompiledFile]
@="Compiled Python File"

[HKEY_CLASSES_ROOT\Python.CompiledFile\DefaultIcon]
@="C:\\Python27\\DLLs\\pyc.ico"

[HKEY_CLASSES_ROOT\Python.CompiledFile\shell\open\command]
@="\"C:\\Python27\\python.exe\" \"%1\" %*"


[HKEY_CLASSES_ROOT\Python.NoConFile]
@="Python File (no console)"

[HKEY_CLASSES_ROOT\Python.NoConFile\DefaultIcon]
@="C:\\Python27\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\Python.NoConFile\shell\open\command]
@="\"C:\\Python27\\python.exe\" \"%1\" %*"

ananconda3.reg (उपयोगकर्ता नाम बदलें)

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.py]
@="Python.File"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\.pyc]
@="Python.CompiledFile"
"Content Type"="text/plain"

[HKEY_CLASSES_ROOT\.pyw]
@="Python.NoConFile"
"Content Type"="text/plain"


[HKEY_CLASSES_ROOT\py_auto_file]

[HKEY_CLASSES_ROOT\py_auto_file\DefaultIcon]
@="C:\\Users\\username\\Anaconda3\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\py_auto_file\shell\open\command]
@="\"C:\\Users\\username\\Anaconda3\\python.exe\" \"%1\" %*"


[HKEY_CLASSES_ROOT\Python.File]
@="Python File"

[HKEY_CLASSES_ROOT\Python.File\DefaultIcon]
@="C:\\Users\\username\\Anaconda3\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\Python.File\shell\open\command]
@="\"C:\\Users\\username\\Anaconda3\\python.exe\" \"%1\" %*"


[HKEY_CLASSES_ROOT\Python.CompiledFile]
@="Compiled Python File"

[HKEY_CLASSES_ROOT\Python.CompiledFile\DefaultIcon]
@="C:\\Users\\username\\Anaconda3\\DLLs\\pyc.ico"

[HKEY_CLASSES_ROOT\Python.CompiledFile\shell\open\command]
@="\"C:\\Users\\username\\Anaconda3\\python.exe\" \"%1\" %*"


[HKEY_CLASSES_ROOT\Python.NoConFile]
@="Python File (no console)"

[HKEY_CLASSES_ROOT\Python.NoConFile\DefaultIcon]
@="C:\\Users\\username\\Anaconda3\\DLLs\\py.ico"

[HKEY_CLASSES_ROOT\Python.NoConFile\shell\open\command]
@="\"C:\\Users\\username\\Anaconda3\\python.exe\" \"%1\" %*"



Links