在python3.x中使用特殊字符反斜杠

2024-05-16 12:59:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用Python脚本和jenkinsapi为Jenkins构建创建日志文件

下面的函数创建生成的控制台输出的文本文件并将其保存到网络位置。我正在寻找获得文件网络路径,以便它可以包括在定制的电子邮件通知

不知道你能不能帮我得到预期的结果。谢谢你

代码:

job_list = ['project_name1', 'project_name2', 'project_name3']

def create_log_file(job_list):

    log_file_info = []
    for job in job_list:
        file_name = os.path.join('//network_location/folder/subfolder1/subfolder2/subfolder3/Jenkins_Build/buildlog/windows/', job + "_" + current_date + file_format)
        file_content = get_console_output(job)
        with open(file_name, 'w', encoding="utf-8") as f:
            f.write(file_content)
        log_file = ['{}: {}'.format(job, file_name.replace("/", "\\"))]            
        log_file_info.append(log_file)
    return log_file_info     

预期结果:

[['project_name1: \network_location\folder\subfolder1\subfolder2\subfolder3\Jenkins_Build\buildlog\windows\project_name1_2018-10-24.txt'], ['project_name2: \network_location\folder\subfolder1\subfolder2\subfolder3\Jenkins_Build\buildlog\windows\project_name2_2018-10-24.txt'], ['project_name3: \network_location\folder\subfolder1\subfolder2\subfolder3\Jenkins_Build\buildlog\windows\project_name3_2018-10-24.txt']]

实际结果:

[['project_name1: \\\\network_location\\folder\\subfolder1\\subfolder2\\subfolder3\\Jenkins_Build\\buildlog\\windows\\project_name1_2018-10-24.txt'], ['project_name2: \\\\network_location\\folder\\subfolder1\\subfolder2\\subfolder3\\Jenkins_Build\\buildlog\\windows\\project_name2_2018-10-24.txt'],
['project_name3: \\\\network_location\\folder\\subfolder1\\subfolder2\\subfolder3\\Jenkins_Build\\buildlog\\windows\\project_name3_2018-10-24.txt']]


Tags: buildtxtprojectlogwindowsjoblocationnetwork
2条回答

我认为以下代码适用于您:

from pathlib import Path
job_list = ['project_name1', 'project_name2', 'project_name3']

def create_log_file(job_list):

    log_file_info = []
    for job in job_list:
        file_name = os.path.join('\\network_location\\folder\\subfolder1\\subfolder2\\subfolder3\\Jenkins_Build\\buildlog\\windows\\', job + "_" + current_date + file_format)
        file_content = get_console_output(job)
        with open(file_name, 'w', encoding="utf-8") as f:
            f.write(file_content)
        log_file = ['{}: {}'.format(job, Path(file_name))]            
        log_file_info.append(log_file)
    return log_file_info

print(create_log_file(job_list))

请注意开头的进口声明。当使用Path(文件名)时,您告诉解释器显式地将给定的字符串视为Path。 我还删除了.format语句,并用转义反斜杠更改了所有斜杠

For more information about python paths you can check the following articles:

click

click

你的实际结果还可以。Python用两个反斜杠(\\)转义反斜杠字符。试着用print函数显示结果,你会发现它实际上符合你想要的

>>> print[0]["project_name1"]

相关问题 更多 >