這兩天一直被一個問題困擾。
在jenkins的windows batch command 測試好的,拿到bat文件中,再從Execute Windows Batch command 中調用這個bat,竟然離奇的報錯了。
為什么呢?
先介紹一下場景和代碼的邏輯。測試好的代碼:
CD %ROOTPATH%
.\Tools\Bin\Python26\python.
exe .\Tools\PythonScripts\SendMail.py %AUTOBUILD_PATH%\Charts mail@mail.com "Test" Config_AutoTest_AutoShooting*.png AutoShootingIndex.htm
其實 AUTOBUILD_PATH 是一個路徑,以"\" 為分隔符,准確來說,在python而言,是一個raw的路徑字符串。 SendMail會去這個路徑下walk,或者listdir,找到文件並讀取后處理發郵件給mail@mail.com
報錯信息:
在網上,看到關於這個多出來的*.* 的解釋:
http://bbs.chinaunix.net/thread-3577853-1-1.html 這篇文章介紹的不錯,看了下大概明白了問題。
但是,如何解決我的問題,而我的問題關鍵,又是如何產生的呢?
我試過如果os.listdir 如果傳入的參數是 raw字符串的"\", 則是成功的,我找到這個,試圖將path 轉換成raw字符串。結果測試不能通過。
http://code.activestate.com/recipes/65211-convert-a-string-into-a-raw-string/
看來估計是jenkins 搞的鬼。