我想最后用'.zip'构造绝对路径,以下是代码段
path='folder/file'
absPath=os.path.join('E:/',path,'.zip')
为此,我得到以下输出
E:/folder1/file\.zip
必需的输出
E:/folder/file.zip
如何在连接时避免.zip之前的\ ??
答案 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