艰苦地学习Python示例15

艰苦地学习Python示例15,python,Python,在示例15中,我们将以艰苦的方式学习Python。为什么脚本是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_in

在示例15中,我们将以艰苦的方式学习Python。为什么脚本是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()
我只是感到困惑,因为文件名是终端唯一需要的东西。

引用

sys.argv是

传递给Python脚本的命令行参数列表。argv[0]是脚本名(这取决于操作系统是否为完整路径名)。如果命令是使用解释器的-c命令行选项执行的,则argv[0]被设置为字符串'-c'。如果没有向Python解释器传递脚本名称,则argv[0]是空字符串

为什么脚本是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()
在这里,作者假设
argv
是一个长度为2的数组(它始终是一个数组,但在本例中是一个特定长度)

更清楚的例子是:

x, y = [5, 4]
print x  # 5
print y  # 4

argv
的情况下,它将为您提供脚本的名称以及传入的参数(
my_scripy.py--arg0 val0

sys.argv
的第一个参数是脚本名称/路径,它会自动传递

比如说,

 $ script.py filename.txt

argv
gives
[“script.py”,“filename.txt”]

我也有同样的问题,我发现在这个练习中,最好在同一根文件夹中有一个名为ex15_sample.txt的文本文件,这样,当您输入
python ex15.py ex15_sample.txt时,它会将脚本名称传递给脚本,并打开文件名ex15_sample.txt


希望这有帮助,脚本自动成为argv参数。这是正确的,因为键入python3.6或python(取决于您所使用的系统)之后的所有内容都被计算为argv。它存储在如下列表中:

argv = [ex15.py, ex15_sample.txt] 

我相信(不要引用我的话)脚本是您脚本文件的名称。如果运行
python myscript.py myfile
script
应保持
myscript.py
,并且
filename
应保持
myfile
第一个argv条目是脚本名称。这与C的做法是一致的。argv总是在索引0中保存正在运行的脚本名称,因此
script,filename=[“scriptname.py”,“yourfile.txt”]