在不改变文件的情况下转换/映射linux引用路径?

2024-04-26 18:18:54 发布

您现在位置:Python中文网/ 问答频道 /正文

当前在一个我的客户需要引用文件路径的项目上 保持linux格式。例如

A.ma , referencing objects from --> //linux/project/scene/B.ma
B.ma , referencing objects from --> //linux/project/scene/C.ma

不过,我们这里的大多数Maya许可证都是在Windows上。我可以运行一个 Python脚本,用于转换所有路径windows路径并保存 文件。例如

^{pr2}$

不过,我正试图找到一种方法,在不进行转换的情况下实现这一点 或者改变原始文件。。。。我会尽力解释我想做什么。在

  • 运行脚本打开文件。在
  • 脚本检查linux格式的引用路径,以及 层次结构的子路径。在
  • 将所有路径映射到相应的windows格式路径。在
  • 使动画师能够正常“保存”文件,而无需运行单独的保存脚本。在

用Python脚本可以实现这一点吗?或者我需要一个 完全编译的插件可以让它工作吗?在

如有任何建议,我们将不胜感激。在


编辑:谢谢你的意见。在

再澄清一下。这些项目是由一家远程公司为我们设立的,部分要求是我们必须保持原有的路径。他们是绝对的道路,我们在这件事上别无选择。在

我们匹配Fedora工作站上的挂载//linux/。同一个驱动器被映射到windows工作站上的Z:\。我们只有2个LinuxTho的Maya许可证,这就是我为什么要这么做的原因。在


Tags: 文件项目from路径project脚本objectslinux
3条回答

这里有一个解决方案。第一步是创建一个跟踪linux/windows引用的dict(别忘了为regexp导入re模块):

>>> def windows_path(path):
    return path.replace('//linux', 'Z:').replace('/', '\\')

>>> reg = re.compile('(\w+\.ma) , referencing objects from --> (.*)')
>>> d = {}
>>> for line in open('D:\\temp\\Toto.txt'):
    match = reg.match(line)
    if match:
        file_name = match.groups()[0]
        linux_path = match.groups()[1]
        d[file_name] = (linux_path, windows_path(linux_path))


>>> d
{'B.ma': ('//linux/project/scene/C.ma', 'Z:\\project\\scene\\C.ma'),
 'A.ma': ('//linux/project/scene/B.ma', 'Z:\\project\\scene\\B.ma')}

然后您只需要在这个dict上循环以请求保存文件:

^{pr2}$

可以使用环境变量来执行此操作。Maya将展开文件路径中存在的环境变量,可以使用玛雅.env为每个平台正确设置它们。在

许多Windows应用程序将带有两个前导“/”的路径解释为UNC路径。我不知道玛雅是不是其中之一,但试试看。如果Maya可以理解“//servername/share/foo”之类的路径,那么您只需设置一个名为“linux”的SMB服务器,这些路径就可以正常工作了。我想这实际上就是您的客户机所做的,因为路径“//linux”在纯linux环境中没有意义。在

相关问题 更多 >