2011-02-09 8 views
0

BlenderのデータをArduinoに接続された外部デバイスから読み込み、ファイルに保存しようとしています。しかし、このエラーが発生しますPythonを使用したBlenderのファイル処理中にエラーが発生しました

SyntaxError: invalid syntax 
Python script error from controller "contr#CONTR#1": 
Traceback (most recent call last): 
    File "SerialBGE.py", line 6, in <module> 
    f=open('abc.dat', 'r') 
IOError: [Errno 2] No such file or directory: 'abc.dat' 

私のコードは間違いなく、私はこの問題を理解していません。

serial.py

import GameLogic 
import pickle 
import os 

os.system('dane.py') 
f=open('abc.dat', 'r') 
print "abc.dat = " 
x=pickle.load(f) 
print x 
print "end of abc.dat" 
f.close(); 
y=x[:] 
for z in x: 
    y.remove(z) 
    print "removing " + str(z) 
    print str(y) + " and " + str(x) 
    f=open('abc.dat', 'w') 
    pickle.dump(y, f) 
    f.close() 
    contr = GameLogic.getCurrentController() 
    location=contr.actuators["loc"] 
    y = 0.001*(ord(z)-128) 
    location.dLoc=[y,0,0] 
    contr.activate(location) 

dane.py:

import serial 
import pickle 

with serial.Serial(COM3,9600) as port, open('abc.dat','r') as f: 
    for i in range(0, 10): 
     x = port.read(size=1) 
     y=pickle.load(f) 
     f.close() 
     f=open('abc.dat','w') 
     for i in x: 
      y.append(i) 
     pickle.dump(y,f) 
     f.close() 
port.close() 

答えて

3

'abc.dat' ファイルは、あなたがプログラムを最初に実行したときに存在していないので、あなたがエラーを取得しています。

「abc.dat」が存在する前に初めてプログラムを実行する場合、初期ケースを処理する必要があります。

+0

最後のデータを読み込み、追加してから書き込みます。その場合、私のコードは問題ありません。そして、port.read()の代わりに自分のデータを置くとうまくいきます。 – change

+1

それは問題ありませんが、あなたの構造について考えてみましょう。あなたはファイルを読み、新しいデータを追加し、それを書き戻します。しかし、あなたが最初にそれを実行するとどうなりますか?このファイルは読み込みには存在しません。その場合は処理する必要があります。 – payne

関連する問題