连接路径和文件名

nin*_*ini 2 python

我必须在python中一起构建完整的路径.我试过这个:

filename= "myfile.odt"

subprocess.call(['C:\Program Files (x86)\LibreOffice 5\program\soffice.exe',
                    '--headless',
                    '--convert-to',
                    'pdf', '--outdir',
                    r'C:\Users\A\Desktop\Repo\',
                    r'C:\Users\A\Desktop\Repo\'+filename])
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个错误

SyntaxError:扫描字符串文字时的EOL.

zan*_*seb 9

尝试:

import os
os.path.join('C:\Users\A\Desktop\Repo', filename)
Run Code Online (Sandbox Code Playgroud)

os模块包含许多用于目录和路径操作的有用方法

  • 使用os加入是很好的,但这里真正的问题是'正在被转义. (2认同)

zvo*_*one 7

反斜杠字符 ( \) 必须在字符串文字中转义。

  • 这是错误的: '\'
  • 这是正确的:'\\'- 这是一个包含一个反斜杠的字符串

因此,这是错误的:

'C:\Program Files (x86)\LibreOffice 5\program\soffice.exe'
Run Code Online (Sandbox Code Playgroud)

有窍门!

前缀为 的字符串文字r旨在更容易编写正则表达式。它们的功能之一是不必转义反斜杠字符。所以,这没问题:

r'C:\Program Files (x86)\LibreOffice 5\program\soffice.exe'
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于以反斜杠结尾的字符串:

  • r'\' - 这是一个语法错误

所以,这也是错误的:

r'C:\Users\A\Desktop\Repo\'
Run Code Online (Sandbox Code Playgroud)

所以,我会做以下事情:

import os
import subprocess


soffice = 'C:\\Program Files (x86)\\LibreOffice 5\\program\\soffice.exe'
outdir = 'C:\\Users\\A\\Desktop\\Repo\\'
full_path = os.path.join(outdir, filename)

subprocess.call([soffice,
                 '--headless',
                 '--convert-to', 'pdf',
                 '--outdir', outdir,
                 full_path])
Run Code Online (Sandbox Code Playgroud)