2016-12-15 177 views
0

我想從批處理文件傳遞參數到我的python文件。
我跟着在這兩個環節上的步驟:無法從批處理文件傳遞參數到python文件

這裏是我的Python文件的一部分,在那裏我試圖通過爭論:

def main(argv): 
imapServ = 'imap.gmail.com' 
filename = 'TestRunLog.log' 
attachment = open("{} {}".format(argv[0], filename), 'rb') 
....##rest of the code 

import sys 
try: 
if __name__ == '__main__': 
    print 'go ahead' 
    main(sys.argv[:1]) 
except ImportError: 
    print 'hi' 

此外,這裏是我用來發送參數到Python文件的批處理文件的一部分:

c:\python27\python.exe C:\Users\abcd\Documents\automation\testsendemail.py %%myhome%\Documents\automation\Testresults\%resultDir% 
pause 

以上,%resultDir%是基於時間戳生成的變量。

這裏是輸出:

go ahead 
Traceback (most recent call last): 
C:/Users/abcd/Documents/automation/testsendemail.py\TestRunLog.log 
    File "C:/Users/abcd/Documents/automation/testsendemail.py", line 44, in <module> 
    main(sys.argv[:1]) 
    File "C:/Users/abcd/Documents/automation/testsendemail.py", line 25, in main 
    attachment = open("{} {}".format(argv[0], filename), 'rb') 
IOError: [Errno 2] No such file or directory: 'C:/Users/abcd/Documents/automation/testsendemail.py TestRunLog.log' 

我跟很多關於這個問題的計算器的問題,但我仍然是無法運行。不知道錯誤在哪裏。

回答

4

該問題與python如何與argv協同工作有關。 在這種情況下,當您運行:

main(sys.argv[:1]) # (["C:\Users\abcd\Documents\automation\testsendemail.py"]) 

你實際上只傳遞給python腳本,這是當前腳本位置第一個參數。

要得到所有的論點,但第一,必須修復濾鏡陣列:

main(sys.argv[1:]) # ["%%myhome%\Documents\automation\Testresults\%resultDir%"]) 

注意,第二個過濾器還將包括你可能會添加到命令行的任何其他參數。


另外,作爲一個附註。您應該考慮使用STD庫來加入路徑。 它應該是這樣的:

from os.path import join 
(...) 
filename = 'TestRunLog.log' 
attachment = open(join(argv[0], filename), 'rb') 
+1

非常感謝。有效。 – user7096987

相關問題