繁体   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