我在这里加入自己的道路有什么不对?
除了列表中的第一项之外的所有内容都将正确加入。
我从tkinter的一个文件中抓取一条路径。
即filedialog.askdirectory()
示例路径:
PATH = "C:/MyUserName/Desktop/SomeDir"
我在做什么:
os.path.join(*(PATH.split("/") + ["somefile.txt"]))
这将打印出以下内容:
C:MyUserName/Desktop/SomeDir/somefile.txt
为什么会丢失第一个/
?
答案 0 :(得分:3)
我需要使用os.normpath
转换我的初始路径我从tkinter获取了一个filedialog输入,然后尝试在问题中使用上述路径样式/代码来访问/创建文件。
由于Windows上的连接/分隔错误导致错误。
答案 1 :(得分:2)
你正在使用Windows,对吗?
来自文档:
在Windows上,遇到绝对路径组件(例如,r'\ foo')时,不会重置驱动器号。如果组件包含驱动器号,则会丢弃所有先前的组件并重置驱动器号。请注意,由于每个驱动器都有一个当前目录,os.path.join(“c:”,“foo”)表示相对于驱动器C上当前目录的路径:(c:foo),而不是c:\ foo
这意味着c:foo实际上是一条正确的路径。请尝试os.path.abspath('c:foo')
和os.path.abspath('c:\\foo')
查看差异。第一个路径是c驱动器上的相对路径,第二个路径是绝对路径。
答案 2 :(得分:2)
Windows保留所有驱动器的当前路径。 C:MyUserName/Desktop/SomeDir/somefile.txt
和C:/MyUserName/Desktop/SomeDir/somefile.txt
都有效,ntpath.join
无法知道您是否需要驱动器相对路径或驱动器绝对路径。