我正在尝试学习如何在Python脚本中使用Jenkins的变量。我已经知道我需要调用变量,但是在使用os.path.join()的情况下我不确定如何实现它们。
我不是开发人员;我是一名技术作家。这段代码是由其他人编写的。我只是尝试调整Jenkins脚本,以便对它们进行参数化,这样我们就不必为每个版本修改Python脚本。
我在Jenkins工作中使用内联Jenkins python脚本。 Jenkins字符串参数是“BranchID”和“BranchIDShort”。我已经查看了很多关于如何在Python脚本中建立变量的问题,但是在os.path.join()的情况下,我不知道该怎么做。
这是原始代码。我添加了从Jenkins参数建立变量的部分,但我不知道如何在os.path.join()函数中使用它们。
# Delete previous builds.
import os
import shutil
BranchID = os.getenv("BranchID")
BranchIDshort = os.getenv("BranchIDshort")
print "Delete any output from a previous build."
if os.path.exists(os.path.join("C:\\Doc192CS", "Output")):
shutil.rmtree(os.path.join("C:\\Doc192CS", "Output"))
我希望输出如:c:\ Doc192CS \ Output
我担心如果我执行以下代码:
if os.path.exists(os.path.join("C:\\Doc",BranchIDshort,"CS", "Output")):
shutil.rmtree(os.path.join("C:\\Doc",BranchIDshort,"CS", "Output"))
我会得到:c:\ Doc \ 192 \ CS \ Output。
有没有办法在此上下文中使用BranchIDshort变量来获取输出c:\ Doc192CS \ Output?
用户@Adonis提供了正确的解决方案作为评论。他说的是这样的:
的确,你是对的。您想要做的是:
os.path.exists(os.path.join("C:\\","Doc{}CS".format(BranchIDshort),"Output"))
(简而言之,使用第二个参数的格式字符串)
所以完整的更正代码是:
import os
import shutil
BranchID = os.getenv("BranchID")
BranchIDshort = os.getenv("BranchIDshort")
print "Delete any output from a previous build."
if os.path.exists(os.path.join("C:\\Doc{}CS".format(BranchIDshort), "Output")):
shutil.rmtree(os.path.join("C:\\Doc{}CS".format(BranchIDshort), "Output"))
谢谢,@ Adonis!