【问题标题】:How to pass Sys.argv[n] to a function from inside if "__name__" == "__main__"如果“__name__”==“__main__”,如何从内部将 Sys.argv[n] 传递给函数
【发布时间】:2020-09-27 11:57:53
【问题描述】:

大家好,我正在尝试编写一个抓取网站并从网站获取链接的代码。 现在我正在尝试实现,用户将给脚本一个link_list.txt,脚本将对其进行迭代。

但是,我的 Sys.argv[] 没有成功

以下是部分代码:

    def link_list_maker(self, link_list_path):
    self.link_list_path = link_list_path
    with open(link_list_path, 'r') as list:
        line = list.readline()
        print(line)  # expecting a line read


if __name__ == "__main__":
    CrawlerClass.link_list_maker(sys.argv[1])
    crawler = CrawlerClass("http://quotes.toscrape.com/")  # TODO: Make a sysargv to work wth link list from user
    crawler.start()

如您所见,我正在尝试为 CrawlerClass.link_list_maker() 函数提供 sys.argv,但我得到的只是:TypeError: link_list_maker() missing 1 required positional argument: 'link_list_path'

我使用以下命令运行脚本:python3 <script_name> <sys.argv[1]>

如何将 argv[1] 正确传递给函数?

【问题讨论】:

  • 顺便说一句,不要使用 list 作为变量名。它是内置的。

标签: python arguments with-statement sys


【解决方案1】:

你的意思是:

if __name__ == "__main__":
    crawler = CrawlerClass("http://quotes.toscrape.com/")  # TODO: Make a sysargv to work wth link list from user
    crawler.link_list_maker(sys.argv[1])
    crawler.start()

【讨论】:

  • 这使它工作。你知道我可以替换 quotes.toscrape.com 并让它遍历我制作的列表吗?
  • 我没有,抱歉。但这听起来确实是一个您应该发布的新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 2018-03-13
  • 1970-01-01
  • 2020-05-29
  • 2020-06-05
  • 2015-09-12
相关资源
最近更新 更多