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



我目前正在使用 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: etwork_location\文件夹\子文件夹1\子文件夹

2\子文件夹3\Jenkins_Build\构建日志\窗口\project_name1_2018-10-24.txt'], ['project_name2: etwork_location\文件夹\子文件夹1\子文件夹2\子文件夹3\Jenkins_Build\构建日志\窗口\project_name2_2018-10-24.txt'], ['project_name3: etwork_location\文件夹\子文件夹1\子文件夹2\子文件夹3\Jenkins_Build\构建日志\窗口\project_name3_2018-10-24.txt']]

实际结果:

[['project_name1: \\\etwork_location\文件夹\\子文件夹1\\子文件夹2\\子文件夹3\\Jenkins_Build\构建日志\\

窗口\\project_name1_2018-10-24.txt'], ['project_name2: \\\etwork_location\\文件夹\\子文件夹1\\子文件夹2\\子文件夹3\\Jenkins_Build\构建日志\\Windows\\\project_name2_2018-10-24.txt'],
['project_name3: \\\etwork_location\文件夹\\子文件夹1\\子文件夹2\\子文件夹3\\Jenkins_Build\构建日志\\Windows\\project_name3_2018-10-24.txt']]

您的实际结果还可以。Python 使用两个反斜杠 (\\( 转义反斜杠字符。尝试使用打印功能显示结果,您将看到它实际上与您想要的相匹配。

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

我认为以下代码对您有用:

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 路径的更多信息,您可以查看以下文章:

点击

点击

最新更新