这两天一直被一个问题困扰。
在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 搞的鬼。