[英]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.