4

だから私はPythonを学んでいます。私は配列と open() を使用して簡単なことをしていましたが、このコードが機能する場合と機能しない場合があります。助けてください!

    print('Load? (Y/N)')
load = raw_input()
if load == "y":
    fin = open("myArr.bat", "r")
    myArr = fin.readline()
if load == "n":
    myArr = [0, 0, 0,
             0, 0, 0,
             0, 0, 0]
if load != "y" and load != "n":
    print 'WUT?'
    exit()

print (myArr[0]) ,  '|' ,  (myArr[1]) ,  '|' ,  (myArr [2])
print '----------'
print (myArr[3]) ,  '|' ,  (myArr[4]) ,  '|' ,  (myArr [5])
print '----------'
print (myArr[6]) ,  '|' ,  (myArr[7]) ,  '|' ,  (myArr [8])
print '_______________________________________________'
print 'What shall I change?'
print 'Number in array: '
foo = raw_input()
doo = int(float(foo))
print 'Number to change to: '
bar = raw_input()
dar = int(float(bar))
myArr[doo] = dar
print '_______________________________________________'
print (myArr[0]) ,  '|' ,  (myArr[1]) ,  '|' ,  (myArr [2])
print '----------'
print (myArr[3]) ,  '|' ,  (myArr[4]) ,  '|' ,  (myArr [5])
print '----------'
print (myArr[6]) ,  '|' ,  (myArr[7]) ,  '|' ,  (myArr [8])
fout = open("myArr.bat", "w")
fout.write(myArr)
fout.close()

それは私にこれを与えます:

   Traceback (most recent call last):
  File "Screen.py", line 35, in <module>
    fout.write(myArr)
TypeError: expected a character buffer object

助けてください!

4

2 に答える 2

11

これは、writeメソッドが最初の引数として文字列を想定しているのに、配列を渡しているためです。

于 2012-04-21T02:53:52.177 に答える
9

コードをテストして を入力するとこのエラーが発生すると思います'n'が、 を入力する'y'と問題なく動作します。これは、次の行によるものです。

if load == "n":
myArr = [0, 0, 0,
         0, 0, 0,
         0, 0, 0]

これによりmyArrlist. 単純にリストをファイルに書き込むわけではありません。最初に文字列に変換する必要があります (ファイルに書き込むことができるのは文字列のみです)。

したがって、このリストをファイルに保存する方法に応じて、次のようにすることができます。

fout = open("myArr.bat", "w")
fout.write(' '.join(map(str, myArr)))
fout.close()

myArr.batこれは基本的に次の行を(と仮定して)に書き込みますmyArr = [0, 0, 0, 0, 0, 0, 0, 0, 0]

0 0 0 0 0 0 0 0 0

お役に立てれば

于 2012-04-21T02:58:29.303 に答える