繁体   English   中英

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

[英]Python3 - os.path.join doesn't join the paths

我正在编写一个python代码,该代码扫描subdirectories中的文件,并根据其具有的列表(csv file)检查文件是否存在。

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

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

而且我可以成功找到我的csv ,并将其通过pandas或Python的csv阅读器。

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

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

当我输出base_dirbase_dir ,分别得到以下内容:

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

而不是:

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

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

我不知道该如何进行。

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

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

我发现了另一个可以帮助您的stackoverflow链接:

为什么os.path.join()在这种情况下不起作用?

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

os.path.join的文档中:

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

因此,最有可能的path以斜杠开头,即path = "/subfolder" ,因此先前的base_dir被丢弃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM