2017-05-05 19 views
0

フォームからCSVファイルをアップロードしていて、Pythonで最初の行を取得したいと考えています。私はApp Engineアプリケーションを使用しており、webapp2を使用しています(関連性があるかどうかはわかりません)。GoogleのアプリケーションエンジンでCSVファイルをアップロードして読み込みます

私はフォーラムで見つけた多くの回答を試みましたが、何も動いていません。私が試した:

def post(self): 
    csv_file = self.request.POST.get('csvFile') 
    fileReader = csv.reader(csv_file.file) 

しかし、私は得る:私も試したAttributeError: 'unicode' object has no attribute 'file'

def post(self): 
    csvFile = self.request.get('csvFile') 
    print csvFile 

    stringReader = csv.reader(StringIO.StringIO(csvFile)) 
    for row in stringReader: 
     print row 

しかし、私は得る:

私のprint文のためのC:\fakepath\my_file.csv ['C:\\fakepath\\my_file.csv']

(Iかrequest.getまたはrequest.POST.getを実行します)。

def post(self): 
    content = self.request.POST.multi['csvFile'].file.read() 

しかし、私は得る::

私も試みAttributeError: 'str' object has no attribute 'file'

私も試してみました:

def post(self): 
    csvFile = self.request.files['csvFile'] 
    file = open(csvFile, 'r') 

しかし、私は得る:AttributeError: files

私も試してみました:

def post(self): 
    csvFile = self.request.POST['csvFile'].value.decode('utf-8') 
    file = csvFile.splitlines() 
    data = csv.DictReader(file) 

しかし、私は得る:AttributeError: 'unicode' object has no attribute 'value'

これらのソリューションの多くは、他の人のために働くように見えるので、私はこれらのエラーを理解していません。

私のフォームは、この(私が使用しているポリマー)のようになります。

<form is="iron-form" action="/upload" method="POST" enctype="multipart/form-data" 
          on-iron-form-submit="_formSubmitted" id="form" name="form"> 

         <div class="box"> 
          <input type="file" name="csvFile" id="file" class="inputfile" 
            data-multiple-caption="{count} files selected" multiple on-tap="_chooseFile"/> 
          <label for="file" name="label"> 
           <span>Choose a CSV file...</span></label> 

         </div> 

は、あなたが提案を持っていますか? ありがとうございました!

答えて

0

私はついにこの問題を発見しました:それはポリマーから来て、オブジェクト '鉄フォーム'はenctype="multipart/form-data"をサポートしていません。私はis="iron-form"を削除し、すべて正常に動作しました。

関連する問題