簡體   English   中英

將命令行參數傳遞給構造函數

[英]Passing in command line argument to constructor

我試圖在命令行中將參數傳遞給構造函數。

我在終端中使用文本編輯器並運行命令行。

import csv
import sys


class myScraper():


    def __init__(self, fileName=""):
        self.fileName = sys.argv


    def test(self):
        print(self.fileName)



def main():

    obj = myScraper() 
    obj.test()

if __name__=='__main__':
    main()

當我在命令行中輸入以下內容時:

$ python Eithan.py hello

我期望打個招呼。

相反,我得到:

TypeError: init ()缺少1個必需的位置參數:'fileName'

為什么我錯過一個論點? 我試圖通過命令行而不是文件中傳遞所有參數。

如果要在命令行上傳遞參數,則可以sys.argv 但是,這不是很靈活。 使用Python的argparse庫會更好。

這里有幾個鏈接:

請參見下面的代碼。

正確的方法是通過main函數傳遞fileName。 請注意,如果腳本未從調用方獲取參數,則main將使用空字符串。

import sys


class myScraper():
    def __init__(self, fileName=""):
        self.fileName = fileName

    def test(self):
        print(self.fileName)


def main(fileName):
    obj = myScraper(fileName)
    obj.test()


if __name__ == '__main__':
    main(sys.argv[1] if len(sys.argv) > 1 else "")

暫無
暫無

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

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