我正在尝试在命令行中将参数传递给构造函数。
我正在使用文本编辑器并在终端中运行命令行。
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”
我为什么要吵架?我正在尝试通过命令行而不是文件传递所有参数。
答案 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 "")