构造绝对路径时去除反斜杠

时间:2018-06-21 18:50:29

标签: concatenation

我想最后用'.zip'构造绝对路径,以下是代码段

path='folder/file'
absPath=os.path.join('E:/',path,'.zip')

为此,我得到以下输出

E:/folder1/file\.zip

必需的输出

 E:/folder/file.zip

如何在连接时避免.zip之前的\ ??

3 个答案:

答案 0 :(得分:1)

您是否正在为Windows构建路径?貌似如此,因为您在开头使用了驱动器号,并且因为os.path.join使用反斜杠来构建路径。如果是这样,您将遇到问题,因为您在输入路径中使用了正斜杠。

os.path.join()通过采用提供的参数并在它们之间放置适当的分隔符来工作。如果您将.zip作为参数调用,它将在它之前得到一个不需要的分隔符。您可能要说的是:

# folder1 and folder2 are presumably variables you are bringing in
abspath = os.path.join('E:\\', folder1, folder2 + '.zip')

如果您按照自己的方式,或者某些答案中建议的方式,那么最好将字符串连接在一起。如果您确实希望路径显示为“ E:/folder1/folder2.zip”并且知道folder1和folder2,则可以轻松地做到这一点:

abspath = "E:/{0}/{1}.zip".format(folder1,folder2)

os.path.join唯一为您执行的操作将放入您正在运行的OS的正确路径分隔符。如果您不想要该功能,则使用它来连接字符串只是不必要的开销。

答案 1 :(得分:0)

在连接一个或多个路径时,os.path.join将为其所接受的每个参数添加一个目录分隔符。 For more Refer docs

由于zip不是目录,因此应包含文件名。因此,字符串串联应该很好,而不是os.path.join

更新后的代码如下:

import os
path='folder1/folder2'
absPath=os.path.join('E:/',path+'.zip')
print(absPath)

OR

import os
path='folder1/folder2.zip'
absPath=os.path.join('E:/',path)
print(absPath)

有很多写方法!

答案 2 :(得分:0)

我建议您避免将folder2称为文件夹:)似乎是其文件名,并在其中添加.zip。 我会做这样的事情

Visual Guides: 80,120