注意:我已經嘗試了每個解決方案在stackoverflow!命令行參數不被檢索
我使用的是Windows 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
)。這總是給我錯誤,所以我試圖直接從shell運行它。
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)
人...蟒蛇被製造成易其再努力!
Python不執行被稱爲'主要功能()' 。在腳本的結尾用一個'main(sys.argv)'語句自己調用它。如果您的腳本也可以被另一個腳本導入(您可能不希望運行main()),您可能需要使用if __name__ =='__main __'來創建條件。 – martineau
請勿寫入'HKEY_CLASSES_ROOT'。該鍵是一個用於*閱讀*的合併視圖。寫入的結果是不確定的。針對您要更新的確切配置單元:'[HKLM | HKCU] \ SOFTWARE \ Classes'。另外,如果您的當前用戶實際上已配置爲使用「Applications \ python.exe」子項,則您已修改(破壞)了您的Python安裝。它應該使用'Python.File'和'Python.NoConFile',它應該使用py [w] .exe啓動程序。用戶選擇在這裏(只讀):HKCU \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .py \ UserChoice。 – eryksun
eryksun我手動完成了這項工作,並使用regedit的導出功能獲取鑰匙,以便與其他人共享。這是怎麼回事:[HKLM | HKCU]具體?我查看了python.file和python.noconfile,從一開始他們就沒事了。 Theres沒有py.exe也沒有pyw.exe,在我的情況下它的python.exe – Distelzombie