将命令行参数传递给构造函数

时间:2019-06-04 19:53:26

标签: python

我正在尝试在命令行中将参数传递给构造函数。

我正在使用文本编辑器并在终端中运行命令行。

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”

我为什么要吵架?我正在尝试通过命令行而不是文件传递所有参数。

2 个答案:

答案 0 :(得分:1)

如果要在命令行上传递参数,则可以sys.argv。但是,这不是很灵活。使用Python的argparse库会更好。

以下是几个链接:

答案 1 :(得分:0)

请参见下面的代码。

正确的方法是通过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 "")