os.path.join 中缺少斜线来自 tkinter filedialog
missing slash in os.path.join result from tkinter filedialog
我在这里加入路径的方式有什么问题?
列表中除第一项外的所有内容都将正确加入。
我正在从 tkinter 的文件对话框中获取路径。
即filedialog.askdirectory()
示例路径:
PATH = "C:/MyUserName/Desktop/SomeDir"
我在做什么:
os.path.join(*(PATH.split("/") + ["somefile.txt"]))
这将打印出以下内容:
C:MyUserName/Desktop/SomeDir/somefile.txt
为什么会输第一个/
?
我需要使用 os.normpath
转换我的初始路径我从 tkinter 获取文件对话框输入,然后尝试使用问题中的上述路径样式/代码来访问/创建文件。
由于 windows 上的错误连接/分隔符导致错误。
您正在使用 Windows,对吗?
来自文档:
On Windows, the drive letter is not reset when an absolute path component (e.g., r'\foo') is encountered. If a component contains a drive letter, all previous components are thrown away and the drive letter is reset. Note that since there is a current directory for each drive, os.path.join("c:", "foo") represents a path relative to the current directory on drive C: (c:foo), not c:\foo.
这意味着c:foo实际上是一条正确的路径。试试 os.path.abspath('c:foo')
和 os.path.abspath('c:\foo')
看看区别。第一个路径是c盘的相对路径,第二个是绝对路径。
Windows 保留所有驱动器的当前路径。 C:MyUserName/Desktop/SomeDir/somefile.txt
和 C:/MyUserName/Desktop/SomeDir/somefile.txt
都是有效的,ntpath.join
无法知道您是想要驱动器相对路径还是驱动器绝对路径。
我在这里加入路径的方式有什么问题?
列表中除第一项外的所有内容都将正确加入。
我正在从 tkinter 的文件对话框中获取路径。
即filedialog.askdirectory()
示例路径:
PATH = "C:/MyUserName/Desktop/SomeDir"
我在做什么:
os.path.join(*(PATH.split("/") + ["somefile.txt"]))
这将打印出以下内容:
C:MyUserName/Desktop/SomeDir/somefile.txt
为什么会输第一个/
?
我需要使用 os.normpath
转换我的初始路径我从 tkinter 获取文件对话框输入,然后尝试使用问题中的上述路径样式/代码来访问/创建文件。
由于 windows 上的错误连接/分隔符导致错误。
您正在使用 Windows,对吗?
来自文档:
On Windows, the drive letter is not reset when an absolute path component (e.g., r'\foo') is encountered. If a component contains a drive letter, all previous components are thrown away and the drive letter is reset. Note that since there is a current directory for each drive, os.path.join("c:", "foo") represents a path relative to the current directory on drive C: (c:foo), not c:\foo.
这意味着c:foo实际上是一条正确的路径。试试 os.path.abspath('c:foo')
和 os.path.abspath('c:\foo')
看看区别。第一个路径是c盘的相对路径,第二个是绝对路径。
Windows 保留所有驱动器的当前路径。 C:MyUserName/Desktop/SomeDir/somefile.txt
和 C:/MyUserName/Desktop/SomeDir/somefile.txt
都是有效的,ntpath.join
无法知道您是想要驱动器相对路径还是驱动器绝对路径。