我用Python向Houdini变量添加不同的值。
其中一些变量是文件路径,并以"/"
结尾 - 其他变量只是名称,不以"/"
结尾。
在我当前的代码中,我使用[:-1]
来删除文件路径的最后一个字符,所以我没有"/"
. 问题是,如果我添加一个像"Var_ABC"
这样的值,结果将是"Var_AB"
的,因为它也会删除最后一个字符。
如何仅在最后一个字符是"/"
时才删除最后一个字符?
这就是我所拥有的,到目前为止它有效:
def set_vars():
count = hou.evalParm('vars_names')
user_name = hou.evalParm('user_name')
for idx in range( 1,count+1):
output = hou.evalParm('vars_' + str(idx))
vars_path_out = hou.evalParm('vars_path_' + str(idx))
vars_path = vars_path_out[:-1]
hou.hscript("setenv -g " + output + "=" + vars_path)
final_vars = hou.hscript("setenv -g " + output + "=" + vars_path)
hou.ui.displayMessage(user_name +", " + "all variables are set.")
谢谢
正如@jasonharper评论中提到的,您可能应该在此处使用rstrip
。它是内置的,IMO 比连续的单行代码更具可读性:
vars_path_out.rstrip('/')
这将去除那些以/
结尾的字符串,并在没有该结尾的情况下返回。否则,它将按原样返回您的字符串。
在你的代码中试试这个:
vars_path_out = hou.evalParm('vars_path_' + str(idx))
if vars_path_out[-1] == '/':
vars_path = vars_path_out[:-1]
或
根据杰森哈珀的评论
vars_path = vars_path_out.rstrip('/')
这比第一个好多了
使用endswith
方法检查它是否以/结尾
if vars_path_out.endswith('/')
或者简单地检查最后一个字符:
if vars_path_out[-1] == '/'
喜欢这个:
vars_path = vars_path_out[:-1] if vars_path_out.endswith('/') else vars_path_out
或者像这样:
if vars_path_out.endswith(''):
vars_path = vars_path_out[:-1]
else:
vars_path = vars_path_out
另一种方法是rstrip
方法:
vars_path = vars_path_out.rstrip('/')