Примечание: я уже пробовал каждое решение в stackoverflow!аргументы командной строки не получены
Я использую окна 10 и python 3.5. Я получаю эту ошибку:
Traceback (most recent call last):
File "geiger_plot.py", line 236, in <module>
main()
TypeError: main() missing 1 required positional argument: 'argv'
при попытке выполнить скрипт, используя все мыслимые команды:
geiger_plot.py test
python geiger_plot.py test
"C:\Program Files\Python35\python.exe" geiger_plot.py test
"C:\Program Files\Python35\python.exe" C:\Users\Chaosuser\Desktop\GeigerLog\geiger_plot.py test test test
я уже фиксированные записи реестра для командной строки питона аргумента:
[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
@="\"C:\\Program Files\\Python35\\python.exe\" \"%1\" %*"
[HKEY_CLASSES_ROOT\Applications\pythonw.exe\shell\open\command]
@="\"C:\\Program Files\\Python35\\pythonw.exe\" \"%1\" %*"
(Это от экспортированного .reg - вот почему есть тысячи обратных косых черт.) В самом скрипте я все сделал правильно, насколько я знаю. Это сценарий, который я хочу выполнить из другого скрипта, используя аргумент, чтобы передать ему путь к файлу (logfile
). Это всегда давало мне ошибки, поэтому я попытался запустить его из оболочки напрямую.
import sys
def main(argv):
sys.argv
print(sys.argv)
logfile = str(sys.argv[1])
Это просто не даже получить там, чтобы дать мне ошибки о моем использовании sys.argv
!
Что не так?
РЕШЕНИЕ было удалить ARGV:
def main(argv):
print(sys.argv)
to
def main():
print(sys.argv)
Man ... питон сделано так легко его трудно снова!
Python не выполняет функцию с именем 'основной()' автоматически , В конце вашего скрипта назовите его самим с помощью оператора 'main (sys.argv)'. Возможно, вы захотите сделать это условным с помощью 'if __name__ == '__main __':' если ваш скрипт также может быть импортирован другим (где вы, вероятно, не захотите запускать main() '). – martineau
Не записывайте в 'HKEY_CLASSES_ROOT'. Этот ключ является объединенным представлением, предназначенным для * чтения *. Результат его написания неопределен. Будьте конкретны для точного улья, который вы хотите обновить: '[HKLM | HKCU] \ SOFTWARE \ Classes'. Кроме того, если ваш текущий пользователь фактически настроен на использование раздела «Приложения \ python.exe», вы изменили (сломали) вашу установку Python. Он должен использовать 'Python.File' и' Python.NoConFile', которые должны использовать py [w] .exe launcher. Выбор пользователя находится здесь (только для чтения): 'HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .py \ UserChoice'. – eryksun
eryksun Я сделал это вручную и использовал функцию экспорта regedit, чтобы получить ключи для меня, чтобы поделиться с другими. Как это: [HKLM | HKCU] конкретный? Я заглянул в python.file и python.noconfile, и с самого начала все было в порядке. Theres no py.exe или pyw.exe, его python.exe в моем случае – Distelzombie