1

我在这里加入我的道路的方式有什么问题?

列表中除第一项之外的所有内容都将正确连接。

我正在从 tkinter 中的文件对话框中获取路径。

即 filedialog.askdirectory()

示例路径:

PATH = "C:/MyUserName/Desktop/SomeDir"

我在做什么:

os.path.join(*(PATH.split("/") + ["somefile.txt"]))

这将打印出以下内容:

C:MyUserName/Desktop/SomeDir/somefile.txt

为什么会输掉第一个/

4

3 回答 3

3

os.normpath我需要使用从 tkinter 获取文件对话框输入来转换我的初始路径,然后尝试在问题中使用上述路径样式/代码来访问/创建文件。

由于 Windows 上的错误连接/分隔符导致错误。

于 2016-03-10T06:22:15.187 回答
2

Windows 为所有驱动器保留当前路径。C:MyUserName/Desktop/SomeDir/somefile.txt并且C:/MyUserName/Desktop/SomeDir/somefile.txt都是有效的,并且无法ntpath.join知道您是想要驱动器相对路径还是驱动器绝对路径。

于 2016-03-10T06:27:43.147 回答
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盘上的相对路径,第二个是绝对路径。

于 2016-03-10T06:24:59.403 回答