【问题标题】:Maya python back slash replacing issueMaya python反斜杠替换问题
【发布时间】:2014-01-17 23:02:59
【问题描述】:

我正在尝试在我的 GUI 中添加自定义路径,但问题是当我使用命令时

cmds.fileDialog2(filemode=3,dialogStyle =1) 

我得到一个像

这样的文件路径
C:\Users\anoorani\Desktop\Test

但是 Maya 似乎只在读取路径

C:/Users/anoorani/Desktop/Test

反引号似乎是个问题 有没有办法在python maya中用“/”替换“\”.....?

【问题讨论】:

  • os.path.normpath(filePath) 到目前为止一直为我工作......
  • 你也许可以做out.replace('\\', '/')
  • @ArgiriKotsaris:我认为您应该将其发布为答案。只需添加一个链接并解释它的作用,无需多言。
  • 最好始终将路径交换为正斜杠,即使在 Windows 上也是如此,因为 Windows 使用正斜杠,而反斜杠是拼写错误的磁铁。
  • 非常感谢!!!@Argiri Kotsaris os.path.normpath 为我工作!!!!

标签: python filepath maya


【解决方案1】:

根据@ArgiriKotsaris 的说明,您可以使用os.path.normpath(path)

通过折叠冗余分隔符和上层引用来规范化路径名。

这样 A//B、A/B/、A/./B 和 A/foo/../B 都变成了 A/B。

这种字符串操作可能会改变包含符号链接的路径的含义。

在 Windows 上,它将正斜杠转换为反斜杠。

所以你的代码是:

import maya.cmds as cmds
import os

path = cmds.fileDialog2(fm=3,dialogStyle =1)
path = path and os.path.normpath(path[0])

或者如果您想始终使用正斜杠,则无需 os 模块并将最后一行更改为:

path = path and path[0].replace('\\', '/')

注意fileDialog2 的文件模式参数名称是fileModefm 而不是filemode

同样fileDialog2返回路径列表或无。

【讨论】:

  • normpath 总是转换为适合本地文件系统的格式。如果您每次都想要正斜杠,则需要使用 normpath(以获得所有清理好处),然后将 \\ 替换为 /
  • 我个人会选择path and os.path.normpath(path[0]).replace('\\', '/'),因为它保留了 normpath 的好处(如折叠冗余分隔符)并保证正斜杠。我很好奇是否有人有更好的方法...
  • @Basic,谢谢,现在我明白了。
  • 如果使用fileDialog2,在替换之前运行normpath有什么好处,尤其是在windows上?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
  • 2012-06-16
相关资源
最近更新 更多