Python 如何以良好的方式连接路径?

Python 如何以良好的方式连接路径?,python,path,Python,Path,我所拥有的: BASE\u DIR=os.path.dirnameos.path.abspath\u文件__ filepath='files/one.txt' 请求路径=os.path.joinBASE\u目录,文件路径 打印请求路径、文件路径、基本目录 它会打印出来 /files/one.txt /files/one.txt /home/pavel/Dev/AiPOSiZI/Lab_1 什么意思是路径没有连接 但是 join“/home/pavel/Dev/AiPOSiZI/Lab_1/”,

我所拥有的:

BASE\u DIR=os.path.dirnameos.path.abspath\u文件__ filepath='files/one.txt' 请求路径=os.path.joinBASE\u目录,文件路径 打印请求路径、文件路径、基本目录 它会打印出来

/files/one.txt /files/one.txt /home/pavel/Dev/AiPOSiZI/Lab_1
什么意思是路径没有连接

但是

join“/home/pavel/Dev/AiPOSiZI/Lab_1/”,“files/one.txt” 我在/home/的末尾添加了/。。。并从/files/…的开头删除/删除。。。 效果很好


我可以手动添加和删除路径,但我想知道是否有更优雅的方式来连接它们

您可以使用python中的f字符串参见

就你而言:

request_path  = f"{BASE_DIR}/{filepath}"
请注意,在文件位置变量BASE_DIR和filepath之间需要额外的斜杠/来正确完成完整的文件位置


希望这有帮助

在Python3.8.0上,它似乎按预期工作

导入操作系统 BASE\u DIR=os.path.dirnameos.path.abspath\u文件__ filepath='files/one.txt' 请求路径=os.path.joinBASE\u目录,文件路径 打印请求路径、文件路径、基本目录 $python-V Python 3.8.0 $python/tmp/a.py /tmp/files/one.txt files/one.txt/tmp
从os.path.join文档中可以看出:如果任何组件是绝对路径,那么之前的所有路径组件都将被丢弃/files/one.txt是一个绝对路径。您的第一个示例没有生成您声称的输出。我想你的意思是filepath='/files/one.txt',在这种情况下,DYZ的注释适用。@DYZ,我怎样才能用标准方法将其转换为relative?你可以删除第一个正斜杠,如果有的话。filepath的值从何而来?为什么f字符串比专用库函数好?不是,但是,如果要硬编码文件路径中的/in,也可以随时随地硬编码。os.path.join只不过为您省去了提供独立于平台的路径分隔符的麻烦。如果您需要与操作系统进行智能通信,os.path.join非常有用。如评论中所述:如果您有多个绝对路径,如/project\u folder和/User,那么os.path.join将找到您的目标文件/project\u folder最特定的文件夹,而忽略/User。在您的情况下,您可能不需要此功能。不太复杂的方法可能是最可靠的。