2014-01-17 2 views
2

Я пытаюсь добавить пользовательский путь, поданный в моей GUI, но проблема в том, что, когда я использую командуМайя питона обратного слэш замены вопроса

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

я получить путь к файлу, как

C:\Users\anoorani\Desktop\Test 

Однако Майя, кажется, только читать пути, как

C:/Users/anoorani/Desktop/Test 

кавычку, кажется, проблема является й есть ли способ заменить «\» на «/» в python maya .....?

+1

'os.path.normpath (filePath)' работал для меня до сих пор ... –

+0

вы можете сделать 'out.replace ('\\', '/')' –

+0

@ArgiriKotsaris: Я думаю, вы должны опубликуйте это как ответ. Просто добавьте ссылку и объясните, что она делает, и еще нечего сказать. – abarnert

ответ

2

Acording к @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: fileMode или fm, а не filemode.

Также fileDialog2 возвращает список путей или None.

+0

normpath всегда преобразует в соответствующий формат для локальной файловой системы. Если вы хотите пересылать косые черты каждый раз, вам нужно выполнить нормальный путь (чтобы получить все преимущества очистки), затем замените '\\' на '/'. – Basic

+0

@Basic, я обновляю свой ответ для этого. –

+0

Я бы лично пошел на путь и путь os.path.normpath (путь [0]). Replace ('\\', '/') ', поскольку он сохраняет преимущества нормального пути (например, сбрасывает избыточные разделители) и гарантирует пересылку -slashes. Мне любопытно, есть ли у кого-то лучший метод ... – Basic

Смежные вопросы