簡體   English   中英

命令行參數未檢索

[英]command line arguments are not retrieved

注意:我已經在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

我已經修復了python命令行參數的注冊表項:

[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的簽名中刪除argv參數,只需使用sys.argv[1]

def main():
    print(sys.argv[1])

您還需要致電main:

if __name__ == '__main__': 
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM