お世話になります。
Python3.5.2
win7 64bitの環境です。
1000行×6列のcsvファイルのデータをPandasに読み込ませる作業を行っています。
ローカル環境にて、
PCのディレクトリ指定から読み込むことは、下記のコードにて
問題なく動作できています。
#coding:utf-8 import pandas as pd if __name__ == '__main__': filepath = "C:\\user\\cgi-bin\\20170205123938.csv" df = pd.read_csv(filepath, encoding="CP932") pd_len = len(df) print('Content-type: text/html\n\n') print(pd_len) #1000
同じ作業を、
PCのディレクトリからではなく、
htmlのformタグからcsvファイルを指定し、
読み込む作業を、下記のコードにて行いました。
CSVファイルを1行ずつ読み込むコードのせいか、
読み込みが安定しません。
認識している問題点は2点です。
1.読み込みの行数が不安定です。
200行や600行など、まちまちの行数で止まったり、
1000行全部を読み込める時もあります。
2.ファイルを読み込んだ後にスクレイピングをしているのですが、
スクレイピングの動作がTimeOutしたり、しなかったりします。
CSVファイルを1行ずつ読み込むのではなく、
ファイルごと読み込む方法はありませんでしょうか?
また、もしくは、下記のコードの
どこを修正すれば、安定しますでしょうか?
<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <body> <form method="post" action="cgi-bin/yahoo_ean.py" enctype="multipart/form-data"> <p>csvファイルを選択してください<br> <input type="file" name="y_csv"></p> <input type="submit" name="submit" /><br /><br /> </form> </body> </html>
↓↓↓formタグを受け取り
#coding:utf-8 import pandas as pd import cgi if __name__ == '__main__': form = cgi.FieldStorage() fileitem = form["y_csv"] in_data = [] if fileitem.file: linecount = 0 while True: line = fileitem.file.readline() if not line: break linecount = linecount + 1 line = line.decode('CP932') line = line.split(",") in_data.append(line) df = pd.DataFrame(in_data) pd_len = len(df) print('Content-type: text/html\n\n') print(pd_len) #読み込む行数が不安定です
どうぞよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/05 15:28