1

このコードは正常に機能します。

    allWriteNodes=nuke.allNodes("Write")
    test = nuke.allNodes()
    for index,each in enumerate(test):
        wrtNodelst.insert(index,each.name())
        print index, each.name()
    sys.stdout.write(pickle.dumps(wrtNodelst))
    quit()
except RuntimeError:
  sys.stderr.write('could not find %s\n' % target_file)
  raise

しかし、別のファイルで読み取ろうとしているこの行はエラーを引き起こします:

print pickle.loads(process.stdout.read())

IndexErrorを与える:リストインデックスが範囲外です...何が原因でピクルスのstdoutデータを読み取れるのか考えてみてください。 トレースバックエラー

Traceback (most recent call last):
File "\RenderUI.py", line 384, in execApp
print pickle.loads(process.stdout.read())
File "D:\Python26\lib\pickle.py", line 1374, in loads
return Unpickler(file).load()
File "D:\Python26\lib\pickle.py", line 858, in load
dispatch[key](self)
File "D:\Python26\lib\pickle.py", line 1203, in load_setitems
mark = self.marker()
File "D:\Python26\lib\pickle.py", line 874, in marker
while stack[k] is not mark: k = k-1
IndexError: list index out of range 
4

2 に答える 2

0

この行:

   print index, each.name()

stdoutpickle が送信される前にデバッグ出力を送信しているため、問題が発生します。

于 2012-12-12T13:34:06.913 に答える
0

使用する

print pickle.load(process.stdout)

これは機能しますか?

read は文字列全体を返さない場合があります。

于 2012-12-12T13:23:23.570 に答える