引自免费微信小程序:皆我百晓生:
从你的描述来看,问题可能出在subprocess.run
调用hscript.exe
时,命令行参数的格式不正确。Houdini的hscript在接收命令时,期望的是一个个独立的指令,而不是像你在文本文件中那样包含了命令和参数的完整字符串。你需要确保传递给subprocess.run
的每个元素都是hscript可以单独识别的命令或参数。
修改你的代码,尝试直接从文件读取每一行命令,并且确保以正确的方式传递给subprocess.run
。这里是一个修改后的示例代码:
def Pass_parameters(self):
with open('renderList.txt', 'r') as file:
for line in file:
# 去除行尾的换行符并根据hscript的命令格式进行处理
command_parts = line.strip().split(' ', 1)
# 确保至少有一个命令部分
if len(command_parts) >= 1:
# hscript命令通常以'/'开头,如果没有则手动添加
if not command_parts[0].startswith('/'):
command_parts[0] = '/' + command_parts[0]
# 如果有参数,则保持原有结构,否则只传递命令
args = command_parts[1:] if len(command_parts) > 1 else []
full_command = [command_parts[0]] + args
# 执行命令
subprocess.run(['C:/Program Files/Side Effects Software/Houdini 19.5.368/bin/hscript.exe'] + full_command)
这个修改后的版本会读取每行内容,假设每行都是一个hscript命令(可能带参数)。它首先分割命令和可能的参数,确保命令以/
开头(这是hscript的标准命令格式),然后将处理后的命令和参数列表传递给subprocess.run
。这样应该能解决你遇到的问题,让hscript正确识别并执行每一条指令。
如果仍然遇到问题,检查renderList.txt
文件中的命令是否格式正确,确保没有额外的空格、换行或其他字符干扰命令的解析。