【问题标题】:How do i replace \\ with / in python 3?如何在 python 3 中用 / 替换 \\?
【发布时间】:2017-08-09 10:55:27
【问题描述】:

我的程序中有一部分需要使用目录。我当前的代码是:

path = os.path.join('C:','Users',getpass.getuser(),'AppData','Roaming','Microsoft','Windows','Start Menu','Programs','Startup')

变量路径打印:'C:Users\\name\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup'。

我的问题是如何使 var path print 'C:Users/name/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup'

【问题讨论】:

  • 你为什么要这样做?在 Windows 上,\ 是目录分隔符,os.path 模块在这里做正确的事情。
  • 是的,它只是正确的,replace 是你想要的..
  • 尽管根据您的操作系统从os.path.join 获得“正确”输出,但您可能还希望在joined 路径上使用os.path.realpath 以避免来自c:Users 而不是@ 的错误987654330@.
  • @ChristianKönig 谢谢,我没有看到 C: 后面缺少反斜杠,所以我认为 python 使用 / 进行目录操作。我总是混合这些。
  • Unipath 模块中查找 Path 类。对于此类问题,它具有非常好的功能

标签: python python-3.6 python-os


【解决方案1】:

按照 cmets 中的建议,系统会执行此操作。

您最好更改os.sepos.path.sep,但是您可以这样做。

>>> os.path.sep = '\\'
>>> os.path.sep
'\\'              #we have changed the separator
>>> os.sep.join(['C:','Users',getpass.getuser(),'AppData','Roaming','Microsoft','Windows','Start Menu','Programs','Startup'])
'C:\\Users\\name\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup'

但你可以简单地使用它,

>>> '\\'.join(['C:','Users',getpass.getuser(),'AppData','Roaming','Microsoft','Windows','Start Menu','Programs','Startup'])
'C:\\Users\\name\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup'

嗯,两者都与 cmets! 中提到的相同!

另外,os.path.join 不依赖于 os.sepos.path.sep,因此更改它们不会产生任何效果。

【讨论】:

  • 请注意os.sep.join 是一个简单的str.join 而不是专用的os.path.join
【解决方案2】:

使用字符串的.replace()方法

"C:Users\\name\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup".replace('\\', '/')

#'C:Users/name/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup'

【讨论】:

    【解决方案3】:

    您可以将 '\\' 替换为 '/'

    path = path.replace('\\','/')
    

    【讨论】:

      猜你喜欢
      • 2013-03-02
      • 1970-01-01
      • 2020-07-18
      • 2020-10-23
      • 1970-01-01
      • 2021-05-09
      • 2021-05-15
      • 2011-06-24
      相关资源
      最近更新 更多