2016-07-27 87 views
0

我最近發現(很驚奇),您可以調用命令行參數,而不是輸入命令行時明確調用的參數。使用python中不同文件的命令行參數

因此,您可以在命令行中運行python file1.py abc,並使用sys.argv [1]從file2.py或file3.py中獲取字符串'abc'。

我還是覺得這樣做不行,但我很高興,因爲它爲我節省了很多麻煩。

但現在我真的很感激爲什麼/這是如何工作的答案。我曾假設sys.argv [1]對每個文件都是本地的。

+1

我不知道你是什麼意思...... sys.argv包含命令行參數,當一個程序啓動時......並且它的全局可用... –

回答

2

至於如何/爲什麼,sys只導入一次(當python啓動時)。當導入sys時,會將argv成員填充到命令行參數中。隨後的import語句將返回相同的sys模塊對象,因此無論您在import sys從哪個位置,您都將獲得相同的對象,因此無論您在應用程序中引用哪個對象,sys.argv都將始終是同一個對象。


無論您應該可以在多個地方做的命令行解析是一個不同的問題。一般來說,我的答案是「否」,除非你只是在一起拼寫腳本才能在接下來的2到3天工作。任何你期望能夠持續的東西都應該完成它所有的解析(可能使用一個健壯的參數解析器,如​​),並將各種功能/類所需的數據從入口點傳遞給它們。

+0

它會出現我誤解了導入如何工作。很高興知道!謝謝! 這不是一個臨時的黑客攻擊,但僅用於內部調試。不過,如你所建議的那樣,我會試着去嘗試一下。我看到它也會讓我使用標誌來指定特定的cmd行參數,這將是一個我沒有想到的有用功能。 –