从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)
答案 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的默认值,它表示程序运行的当前目录。