Python3-os.path.join不加入路径

时间:2019-07-31 13:04:05

标签: python python-3.x

我正在编写一个python代码,该文件扫描subdirectories中的文件,并基于包含(csv file)的列表来检查文件是否存在。

到目前为止,如果可以,我可以获取绝对路径,然后使用字符串将其连接:

    base_dir = os.path.abspath(os.path.dirname(__file__))
    csv_path = os.path.join(my_path, csv_filename)

我可以成功找到我的csv并将其通过熊猫或Python的csv阅读器。

但是,当我浏览csv文件名所在的位置(正确)时,然后尝试执行以下操作:

    base_dir = os.path.abspath(os.path.dirname(__file__))
    full_path = os.path.join(base_dir, path, filename)
  • 请注意,路径是subdirectory,文件名是我要检查的实际文件名。

当我输出base_dir和full_path时,分别得到以下内容:

    /home/myname/projectFolder
    /subfolder/filename.extension

代替:

  /home/myname/projectFolder/subfolder/filename.extension

发生的事情显然是错误的。我需要完整的filepath运行os.path.exists()来查看文件是否存在,但是由于我用full_path获得的只是相对路径,所以

我不知道该怎么办。

2 个答案:

答案 0 :(得分:1)

如果字符串以/开头,则它将视为absolute path,这是不希望的。

因此,请尝试从字符串的开头删除slash

我找到了另一个可以帮助您的stackoverflow链接:

  

Why doesn't os.path.join() work in this case?

为获得最终结果,您只需要尽量避免在路径中使用斜线即可。

答案 1 :(得分:1)

摘自os.path.join的文档:

  

[...]如果组件是绝对路径,则所有先前的组件都将被丢弃,并且连接将从绝对路径组件继续。

因此,path最有可能以斜线开头,即path = "/subfolder",因此前一个base_dir被丢弃。