【问题标题】:Using os.path.dirname on windows path [closed]在 Windows 路径上使用 os.path.dirname [关闭]
【发布时间】:2016-07-24 00:11:31
【问题描述】:

我正在使用运行 python 2.7 的 linux 机器。 我想用os.path.dirname()获取文件全路径的父目录(不是来自本机),例如:
C:\\documents and settings\\Dan\\yada\\1.txt =>
将导致C:\\documents and settings\\Dan\\yada

但令人惊讶的是,我得到的是空字符串。

任何人都可以解释为什么以及如何解决它?

【问题讨论】:

  • Linux 不知道 c:\\
  • 相当困难的猜测,没有代码来显示你如何调用它等等。os.path.exists(path_you_passed_to_dirname) 的结果是什么?你是如何连接到 Windows 机器的?这里有太多未解决的问题可能是错误的。
  • @Simon 更准确地说,在 linux 上,C:\documents and settings\Dan\yada\1.txt 是一个有效的文件名(例如,你可以有一个 /home/dan/C:\documents and settings\Dan\yada\1.txt。所以os.path.dirname("C:\\documents and settings\\Dan\\yada\\1.txt")""(空字符串)原样只是一个文件名,同样os.path.dirname("1.txt") 也是""

标签: python linux python-2.7


【解决方案1】:

改用ntpath

>>> import ntpath
>>> ntpath.dirname('C:\\documents and settings\\Dan\\yada\\1.txt')
'C:\\documents and settings\\Dan\\yada'

来自the documentation

由于不同的操作系统有不同的路径名约定,标准库中有这个模块的几个版本。 os.path 模块始终是适用于 Python 运行的操作系统的路径模块,因此可用于本地路径。但是,如果您想以不同格式之一操作始终的路径,您也可以导入和使用各个模块。它们都有相同的界面:

  • posixpath 用于 UNIX 样式的路径
  • ntpath 用于 Windows 路径
  • macpath 用于旧式 MacOS 路径
  • os2emxpath 用于 OS/2 EMX 路径

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多