os.join() 的奇怪行为



我注意到Pythons os.join((的奇怪行为。 因为我正在向路径添加年份和文件名。这是我的代码。

#!/usr/bin/env python
import os
#------------------------------------------------
def file_walk(root, ext):
# Walk file with me, Laura Palmer!
fList = []
for current, dirs, files in os.walk(root):
for file in files:
fname = os.path.join(current, file) # this works fine, yeah!
src = os.path.isfile(fname)
if src:
if fname.endswith(ext):
fList.append(fname)
return fList

myFolder = r"d:temptest"
myExt = ".html"
myYear = "2019"
allfiles = file_walk(myFolder, myExt)
for theFile in allfiles:
sourceFile = theFile
destinFile = os.path.join(myFolder, myYear, theFile)
print sourceFile
print destinFile
print 

myFile = "bookmarks_06_05_2019.html"
print os.path.join(myFolder, myYear, myFile)
# EoF

作为字符串,它们工作正常(见最后一行(,但作为路径,不太:(

我从打印目的地文件获得的输出

d:\temp\test\bookmarks_01_26_2018.html

d:\temp\test\bookmarks_05_06_2014.html

d:\temp\test\bookmarks_06_05_2019.html

我期待以下内容:

d:\temp\test\2019\bookmarks_01_26_2018.html

d:\temp\test\2019\bookmarks_05_06_2014.html

d:\temp\test\2019\bookmarks_06_05_2019.html

谁能指出我出错的正确方向?

theFile

是绝对文件路径。如果您只想从中获取基本名称,请使用:

destinFile = os.path.join(myFolder, myYear, os.path.basename(theFile))

请注意,os.path.join返回最后一个绝对参数,并在路径中组合该参数之后返回任何相对参数。这就是为什么结果没有2019年的成分。

相关内容

  • 没有找到相关文章