【问题标题】:Why does my __file__ path contain both forward slashes and back slashes?为什么我的 __file__ 路径同时包含正斜杠和反斜杠?
【发布时间】:2016-12-12 10:49:01
【问题描述】:

当我在脚本中检查 __file__ 变量时,我看到正斜杠一直到某个点,然后文件路径切换为成对的反斜杠。

如果我在这个文件路径下的脚本中 C:\WorkFiles\python\wat_disposition\wat_disposition\__init__.py

我在脚本中运行print(__file__),得到以下输出:

'C:/WorkFiles/python/wat_disposition\\wat_disposition\\__init__.py'

为什么它同时显示正斜杠和反斜杠?不应该是其中一个吗?

我很担心,因为我想确保我的文件路径对以后的文件写入操作有效。

注意:我在 Pycharm 的 Windows 7 上运行 python 3.x

【问题讨论】:

  • 这到底是哪个版本的 Python?我无法通过命令提示符在 3.5.2 或 2.7.12 中重现这一点。导入模块后,您可以使用__file__ = os.path.abspath(__file__) 修复路径。
  • 通常可以将斜杠和反斜杠与 Windows API 混合和匹配 - 除非将 \\?\ 前缀用于扩展路径。此外,命令行程序和内置 cmd.exe 命令通常需要反斜杠作为路径分隔符,因为它们使用斜杠作为选项。

标签: python windows python-3.x pycharm


【解决方案1】:

当您指定 Python 脚本的相对路径时,就会出现这种情况。相对路径成为您的文件的一部分,并且它可能与基于当前工作目录 (%CD%) 和调用脚本的相对路径的目录分隔符混合在一起。

import os
__file__ = os.path.abspath(__file__)

... 如上面@eryksun 所述,可以解决问题。 Windows 上的 os.path.abspath() 始终将其转换为反斜杠。就风格而言,我宁愿不重写我认为的常量,所以我通常将 os.path.abspath() 包裹在我对 file 的单次使用中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-12
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    • 2013-07-23
    • 2012-11-16
    相关资源
    最近更新 更多