2017-01-27 4 views
2

私はPythonの初心者です。私は.csvファイルにデータを格納しようとしているが、私は私のプログラムを実行すると、私は次のエラーを取得する:Pythonファイルの操作エラーが発生しました:ValueError:閉じられたファイルの入出力操作

Name: Msc Id: A100 
Traceback (most recent call last): 
    File "./python.py", line 29, in <module> 
    obj.writeInCsvFile() 
    File "./python.py", line 24, in writeInCsvFile 
    fp.write(column)  
ValueError: I/O operation on closed file 

私のコードはここにある:

#!/usr/bin/python 

import csv 

class MyClass: 
     Name = '' 
     Id = '' 

     def __init__(self, name, id): 
       self.Name = name 
       self.Id = id 

     def printData(self): 
       print "Name:", self.Name, "Id:", self.Id 

     def writeInCsvFile(self): 
       with open("file.csv", "wb") as fp: 
         wr = csv.writer(fp) 

         data = [["Msc", "Ijp"], ["10", "20"], ["50", "60"]] 

       for row in data: 
         for column in row: 
           fp.write(column) 
           fp.write("\t") 

obj = MyClass("Msc", 'A100') 
obj.printData() 
obj.writeInCsvFile() 

誰かが私を助けて。少し早いですがお礼を。

+1

インデントの問題。データの行にはインデント、その下には対応する行が1つ右に表示されます。 – Tagc

+1

次のアドバイス:Python Code_の_Style Guideに従ってください[インデントレベルごとに4スペース](https://www.python.org/dev/peps/pep-0008/#indentation)を使用してください。 – Matthias

答えて

3

forループはwithブロック内でインデントされません。これらをインデントします。

def writeInCsvFile(self): 
      with open("file.csv", "wb") as fp: 
        wr = csv.writer(fp) 

        data = [["Msc", "Ijp"], ["10", "20"], ["50", "60"]] 

        for row in data: 
          for column in row: 
            fp.write(column) 
            fp.write("\t") 
+0

ありがとうございます! – rsp

関連する問題