我必须在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])
但是我收到了这个错误
SyntaxError:扫描字符串文字时的EOL。
答案 0 :(得分:7)
尝试:
import os
os.path.join('C:\Users\A\Desktop\Repo', filename)
os模块包含许多用于目录和路径操作的有用方法
答案 1 :(得分:3)
反斜杠字符(\
)必须以字符串文字进行转义。
'\'
'\\'
- 这是一个包含一个反斜杠的字符串因此,这是错误的:
'C:\Program Files (x86)\LibreOffice 5\program\soffice.exe'
前缀为r
的字符串文字用于更容易编写正则表达式。它们的一个特性是不必转义反斜杠字符。所以,这没关系:
r'C:\Program Files (x86)\LibreOffice 5\program\soffice.exe'
但是,对于以反斜杠结尾的字符串不起作用:
r'\'
- 这是语法错误所以,这也是错误的:
r'C:\Users\A\Desktop\Repo\'
所以,我会做以下事情:
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])
答案 2 :(得分:2)
要构建zanseb所说的内容,请使用os.path.join,但也是一个转义字符,因此你的字符串文字不能以\结尾,因为它会转义结尾引号。
import os
os.path.join(r'C:\Users\A\Desktop\Repo', filename)
答案 3 :(得分:1)
您遇到的问题是您的原始字符串以单个反斜杠结尾。因为我不明白,这是不允许的。你可以在最后加倍斜杠:
r'C:\Users\A\Desktop\Repo\\'+filename
或使用os.path.join()
,这是首选方法:
os.path.join(r'C:\Users\A\Desktop\Repo', filename)
答案 4 :(得分:1)
对于遇到这个问题的其他人,您可以使用\
连接一个Path
对象和str
。
将path.Path
用于与两者 Unix和Windows兼容的路径(您可以使用与使用pathlib.PureWindowsPath
相同的方式)。
我使用pathlib.PureWindowsPath
的唯一原因是该问题专门询问了Windows路径。
例如:
import pathlib
# PureWindowsPath enforces Windows path style
# for paths that work on both Unix and Windows use path.Path
base_dir = pathlib.PureWindowsPath(r'C:\Program Files (x86)\LibreOffice 5\program')
# elegant path concatenation
myfile = base_dir / "myfile.odt"
print(myfile)
>>> C:\Program Files (x86)\LibreOffice 5\program\myfile.odt
答案 5 :(得分:0)
将库添加到代码中:
from pathlib import Path
当您要获取不带文件名的当前路径时,请使用此方法:
print("Directory Path:", Path().absolute())
现在您只需要在其中添加文件名:例如
mylink = str(Path().absolute())+"/"+"filename.etc" #str(Path().absolute())+"/"+"hello.txt"
如果通常添加到第一个路径“ r”字符 例如:r“ c:// ...”
您无需在此处执行