【问题标题】:Working with special character backslash in Python 3.x在 Python 3.x 中使用特殊字符反斜杠
【发布时间】:2018-10-24 10:46:33
【问题描述】:

我目前正在使用 Python 脚本和 Jenkins API 为 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']]

【问题讨论】:

    标签: python python-3.x jenkins-api


    【解决方案1】:

    你的实际结果是好的。 Python 使用两个反斜杠 (\\) 转义反斜杠字符。尝试使用打印功能显示您的结果,您会发现它实际上与您想要的匹配。

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

    【讨论】:

      【解决方案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(file_name) 时,您是在告诉解释器将给定的字符串显式视为路径。 我还删除了.format 语句,并用转义的反斜杠更改了所有斜杠。

      有关 python 路径的更多信息,您可以查看以下文章:

      click

      click

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-02
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 2022-07-08
        • 2013-09-26
        • 1970-01-01
        相关资源
        最近更新 更多