在python中传递sys.argv中的目录名

时间:2014-01-10 07:44:23

标签: python sys

从sys传递arugments的快速问题。在下面的代码中,我不理解data_dir =“。”这个data_dir在另一个部分用于表示文件目录,但我不明白=“。”片。我原以为sys.argv只传递一个arugment,可以在函数main中使用的文件名。任何帮助将不胜感激!

def main(name, data_dir ="."):
    resp = Respondents()
    resp.ReadRecords(data_dir)
    print 'Number of respondents', len(resp.records)

    preg = Pregnancies()
    preg.ReadRecords(data_dir)
    print 'Number of pregnancies', len(preg.records)

if __name__ == '__main__':
    main(*sys.argv)

3 个答案:

答案 0 :(得分:1)

sys.argv之前的*会导致列表扩展到函数的所有参数中。所以sys.argv [0]传递给name,如果存在,则sys.argv [1]传递给data_dir,覆盖“。”

答案 1 :(得分:0)

希望这个例子有助于理解* sys.argv的工作原理。 DATA_DIR = “”。 main()函数的参数实际上是一个默认参数,即如果你没有传递data_dir的值,python将其值取为“。”。它代表UNIX中的当前目录。

>>> 
>>> def main(name, data_dir = "."):
...     print name
...     print data_dir
... 
>>> import sys
>>> sys.argv
['']
>>> sys.argv[0] = "some_file_name"
>>> 
>>> main(*sys.argv)
some_file_name
.
>>> 
>>> sys.argv.append("my_data_dir")
>>> main(*sys.argv)
some_file_name
my_data_dir
>>> 

答案 2 :(得分:0)

“”。是data_dir的默认值,它表示程序运行的当前目录。