2017-03-02 5 views
-2

私はPythonで2つのプログラムを持っています。顧客の情報をCSVに書き込む。もう一方はそれにアクセスします。最初にそれを書いたときに、私はCSVファイルを(Excelで)開き、それが正しく書かれていることを確認することができます。しかし、他のプログラムがCSVファイルの新しいデータにアクセスするには、手動で開いて保存する必要があります。それ以外の場合は動作しません。誰がなぜこのことが分かっているのですか?CSVへの書き込みとファイルの保存

編集:

これは(最初のプログラムから)それに書き込み:

f = open('details.csv', 'at', newline=''); csv_f = csv.reader(f) 
csv_w.writerow(clientList) 
f.close() 

そして、これは、(第2プログラム)を読み取りますしようとしたとき、私はこのエラーを取得する

f = open('details.csv', 'rt', newline=''); csv_f = csv.reader(f) 
for row in csv_f: 
    name.append(row[0]) 

行[0]をリストに追加します。

Traceback (most recent call last): 
    File "C:\Users\Dan\Desktop\Garden Centre\work.py", line 8, in <module> 
    name.append(row[0]) 
IndexError: list index out of range 
+2

コードを表示すると、お手伝いをすることができます。 :) – sangheestyle

答えて

0

私は、異なるプラットフォームの行末から生じるこのような問題の数を見てきました。 Pythonの2の下には、「ユニバーサル行末」ファイルの読み取りモードを試してみてください:

with open('data.csv', 'rU') as f: 
    for row in csv.reader(f): 
     print row 

Excelは、多くの場合、csvモジュールの邪魔になることができ、古いマック(\r)およびWindows(\r\n)規格を使用しないため、特にUnixまたはMacプラットフォーム上で、PythonはUnixの標準行が終了することを期待しています(\n)。 Python 3は一般的にこれ(および他のファイル/文字列エンコーディングの問題)についてよりスマートなので、一般的に特別なモードは必要ありません。

+0

私はあなたが示唆したことを試しましたが、私は既にPython 3を使っていましたので、私はまだ同じエラーに遭遇しているので、違いが生じているのかどうかはわかりません。 –

+0

Python 3のIMEでは、Uモードと大きな違いはありません。あなたはおそらく廃止警告を受けるでしょう。しかし、 'newline = '''パラメータは何ですか?それはあなたの方法で取得する可能性が高いように見えます。 –

0

数時間お試しいただきありがとうございます。 Excelでは、「空の」行の各項目には、「行」の項目数が最も多い項目が含まれています。 PythonはそれをCSVに書き出すのではなく、空の行の1つの項目だけにNoneが含まれています。各行を繰り返したときに、空の行のリストに最初に追加する項目はありませんでした。 最初のプログラムで書かれたリストに手動で追加する必要がありました。

関連する問題