我目前正在自学 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.
在杰森的回答中添加几点:
获取所有用户提供的参数: user_args = sys.argv[1:]
将 视为 sys.argv
字符串列表(Jason 提到)。因此,所有列表操作都将在此处应用。这称为“列表切片”。有关更多信息,请访问 此处 .
语法如下: list[start:end:step]
。如果省略start,则默认为0,如果省略end,则默认为列表的长度。
假设您只想采用第 3 个参数之后的所有参数,那么:
user_args = sys.argv[3:]
假设您只想要前两个参数,那么:
user_args = sys.argv[0:2] or user_args = sys.argv[:2]
假设您需要参数 2 至 4:
user_args = sys.argv[2:4]
假设您想要最后一个参数(最后一个参数始终为 -1,因此这里发生的是我们从后面开始计数。因此开始是最后一个,没有结束,没有步骤):
user_args = sys.argv[-1]
假设您想要倒数第二个参数:
user_args = sys.argv[-2]
假设您想要最后两个参数:
user_args = sys.argv[-2:]
假设您需要最后两个参数。这里,start 为 -2,即倒数第二个项目,然后到末尾(用 表示 :
):
user_args = sys.argv[-2:]
假设您想要除最后两个参数之外的所有内容。这里,start 为 0(默认情况下),end 为倒数第二项:
user_args = sys.argv[:-2]
假设您想要按相反的顺序排列参数:
user_args = sys.argv[::-1]