我目前正在自学 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.
sys.argv
是模块的一个属性 sys
。它表示在命令行中传递给文件的参数。 sys.argv[0]
捕获文件所在的目录。 sys.argv[1]
返回在命令行中传递的第一个参数。想象一下我们有一个 example.py 文件。
import sys # Importing the main sys module to catch the arguments
print(sys.argv[1]) # Printing the first argument
现在,我们在命令提示符中执行此操作:
python example.py
它会在第 2 行抛出一个索引错误。因为还没有传递参数。你可以使用以下命令查看用户传递的参数的长度 if len(sys.argv) >= 1: # Code
。如果我们运行 example.py 并传递一个参数
python example.py args
它打印:
args
因为这是第一个论点!假设我们已经使用 PyInstaller 将其制作成可执行文件。我们会这样做:
example argumentpassed
它打印:
argumentpassed
当您在终端中执行命令时,它确实很有帮助。首先检查参数的长度。如果没有传递参数,则执行帮助文本。