8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

'sys.argv[1]' 是什么意思?(sys.argv 是什么,它来自哪里?)

user6685121 2月前

114 0

我目前正在自学 Python,我只是想知道(参考下面的示例) sys.argv[1] 用简单的术语代表什么。它只是要求输入吗?#!/usr/bin/pyt...

我目前正在自学 Python,我只是想知道(参考下面的示例)用简单的术语来说,这 sys.argv[1] 代表什么。它只是要求输入吗?


#!/usr/bin/python3.1

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main() function
def main():
  print ('Hello there', sys.argv[1])
  # Command line args are in sys.argv[1], sys.argv[2] ..
  # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main() function to begin
# the program.
if __name__ == '__main__':
  main()

您可能被引导到这里,因为您询问的是使用sys.argv的代码中的IndexError 。问题不在于您的代码;问题在于您需要以使sys.argv包含正确值的方式运行程序。请阅读答案以了解sys.argv工作原理。

If you have read and understood the answers, and are still having problems on Windows , check if Python 脚本是否不采用 Windows 中的 sys.argv 来 fixes the issue. If you are trying to run the program from inside an IDE , you may need IDE-specific help - please search, but first check if you can run the program successfully from the command line.

帖子版权声明 1、本帖标题:'sys.argv[1]' 是什么意思?(sys.argv 是什么,它来自哪里?)
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由user6685121在本站《regex》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我想指出的是,之前的答案对用户的知识做了很多假设。这个答案试图从更教程的层面来回答这个问题。

    对于每次调用 Python, sys.argv 都会自动生成一个字符串列表,表示命令行上的参数(以空格分隔)。该名称来自 C 编程约定 ,其中 argv 和 argc 表示命令行参数。

    当你熟悉 Python 时,你会想要了解更多有关列表和字符串的知识,但与此同时,这里有几件事情你需要了解。

    列表中的函数 len 打印参数的数量

    from __future__ import print_function
    import sys
    print(sys.argv, len(sys.argv))
    

    该脚本需要 Python 2.6 或更高版本。如果您调用此脚本 print_args.py ,则可以使用不同的参数调用它以查看会发生什么。

    > python print_args.py
    ['print_args.py'] 1
    
    > python print_args.py foo and bar
    ['print_args.py', 'foo', 'and', 'bar'] 4
    
    > python print_args.py "foo and bar"
    ['print_args.py', 'foo and bar'] 2
    
    > python print_args.py "foo and bar" and baz
    ['print_args.py', 'foo and bar', 'and', 'baz'] 4
    

    如您所见,命令行参数包含脚本名称但不包含解释器名称。从这个意义上讲,Python 将脚本视为 可执行 文件。如果您需要知道可执行文件的名称(在本例中为 python),可以使用 sys.executable .

    从示例中可以看出,如果用户使用引号中封装的参数调用脚本,则可能会接收包含空格的参数,因此您得到的是用户提供的参数列表。

    现在,在您的 Python 代码中,您可以使用此字符串列表作为程序的输入。由于列表以从零开始的整数为索引,因此您可以使用 list[0] 语法获取各个项目。例如,要获取脚本名称:

    script_name = sys.argv[0] # this will always work.
    

    虽然很有趣,但您很少需要知道脚本名称。要获取文件名脚本后的第一个参数,您可以执行以下操作:

    filename = sys.argv[1]
    

    这是一种非常常见的用法,但请注意,如果没有提供参数,它将失败并出现 IndexError。

    此外,Python 允许你引用列表的一部分,因此,若要获取 另一个 仅包含用户提供的参数(但不包含脚本名称)的列表,你可以这样做

    user_args = sys.argv[1:] # get everything after the script name
    

    此外,Python 还允许你将一系列项目(包括列表)分配给变量名。因此,如果你希望用户始终提供两个参数,则可以将这些参数(作为字符串)分配给两个变量:

    user_args = sys.argv[1:]
    fun, games = user_args # len(user_args) had better be 2
    

    因此,要回答您的具体问题, sys.argv[1] 表示提供给相关脚本的第一个命令行参数(作为 string )。它不会提示输入,但如果在脚本名称后面的命令行上没有提供任何参数,它将失败并出现 IndexError。

返回
作者最近主题: