2017-09-26 56 views
0

セキュアなFTPサーバにCSVファイルをセットして、私が操作できるようにメモリ内のPandas DataFramesに読み込みしようとしていますAPIを介して他の場所に渡します。 FTPサーバーには認証が必要です。つまり、非常に便利なpd.read_csv()を使用してサーバーから直接csvを読み取ることはできません。安全なFTPサーバからPandas DataFrameにCSVを読み取るには

次(のPython 3.xの)コードを接続してからディスクにファイルを書き出します。

from ftplib import FTP 
import pandas as pd 

server = "server.ip" 
username = "user" 
password = "psswd" 

file1 = "file1.csv" # Just one of the files; I'll eventually loop through... 

ftp = FTP(server) 
ftp.login(user=username, passwd=password) 

with open(filename, "wb") as file: 
    ftp.retrbinary("RETR " + filename, file.write) 

# Do some other logic not relevant to the question 

は私がに戻って、それを読んだ後、ファイルをディスクに書き込み、避けたいのですがI pd.read_csv()がパブリックアドレスから直接CSVファイルを読み込むことを知っていますが、ログイン後にファイルがゲートされているときは、どのようにするのかわかりません。

答えて

0

IIRC urllib2を使用して認証されたFTP要求を実行できます。おそらく何か

import urllib2, base64 
import pandas as pd 

req = urllib2.Request('ftp://example.com') 
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '') 
request.add_header("Authorization", "Basic %s" % base64string) 
response = urllib2.urlopen(req) 
data = pd.csv_read(response.read()) 

詳細については、urllib2 hereを参照してください。

関連する問題