我正在编写一个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获得的只是相对路径,所以
我不知道该怎么办。
答案 0 :(得分:1)
如果字符串以/
开头,则它将视为absolute path
,这是不希望的。
因此,请尝试从字符串的开头删除slash
。
我找到了另一个可以帮助您的stackoverflow链接:
为获得最终结果,您只需要尽量避免在路径中使用斜线即可。
答案 1 :(得分:1)
摘自os.path.join
的文档:
[...]如果组件是绝对路径,则所有先前的组件都将被丢弃,并且连接将从绝对路径组件继续。
因此,path
最有可能以斜线开头,即path = "/subfolder"
,因此前一个base_dir
被丢弃。