在Learn Python the Hard Way中的示例15中。为什么脚本是argv的参数或变量之一?
from sys import argv
script, filename = argv
txt = open(filename)
print "Here's your file %r:" % filename
print txt.read()
print "Type the filename again:"
file_again = raw_input("> ")
txt_again = open(file_again)
print txt_again.read()
我很困惑,因为file_name是终端唯一要求的东西。
答案 0 :(得分:1)
引自python docs,
sys.argv是
传递给Python脚本的命令行参数列表。 argv [0]是脚本名称(无论这是否是完整路径名,它依赖于操作系统)。如果使用解释器的-c命令行选项执行命令,则将argv [0]设置为字符串'-c'。如果没有脚本名称传递给Python解释器,则argv [0]为空字符串。
答案 1 :(得分:0)
为什么脚本是argv的参数或变量之一?
这里作者假设argv
是一个长度为2的数组(它总是一个数组,但在这种情况下是一个特定的长度)。
一个更清晰的例子:
x, y = [5, 4]
print x # 5
print y # 4
在argv
的情况下,它将为您提供脚本的名称以及您传入的参数(my_scripy.py --arg0 val0
)
答案 2 :(得分:0)
sys.argv
的第一个参数是脚本名称/路径,它会自动传递。
例如,
$ script.py filename.txt
argv
提供["script.py", "filename.txt"]
答案 3 :(得分:0)
我遇到了同样的问题,我发现在此练习中,最好在同一根文件夹中有一个名为ex15_sample.txt的文本文件,这样当您输入python ex15.py ex15_sample.txt
时,它将脚本名传递给脚本,然后打开文件名 ex15_sample.txt
希望对您有帮助
答案 4 :(得分:0)
脚本自动是argv参数。这是正确的,因为键入python3.6或python(取决于您所使用的系统)后的所有内容均计为argv。它将存储在这样的列表中:
argv = [ex15.py, ex15_sample.txt]