2009-07-10 15 views
3

私はグーグルではありましたが、1つのファイルをアップロードするしか方法がありませんでした...そして、すべてのファイルをローカルのディレクトリからリモートのftpディレクトリにアップロードしようとしています。どのようにこれを達成するための任意のアイデアですか?Python ftplib - 複数のファイルをアップロードしていますか?

+0

https://gist.github.com/dnozay/37e8148ee748068afb91 - 再帰的なコピー。 – dnozay

答えて

10

ループありですか?

編集:ファイルだけをアップロードする普遍的なた場合には、次のようになります。

import os 
for root, dirs, files in os.walk('path/to/local/dir'): 
    for fname in files: 
     full_fname = os.path.join(root, fname) 
     ftp.storbinary('STOR remote/dir' + fname, open(full_fname, 'rb')) 

は明らかに、あなたはちょうどこのようなファイル名を保存している場合、名前の衝突のために外を見る必要があります。

+0

ウェブサイトをホストにアップロードするスクリプトです...ローカルハードドライブの一部のディレクトリにウェブサイトがあり、そのコンテンツをアップロードしたいのですが、ディレクトリではなく、ファイルのみでアップロードするとウェブサイトからアクセスできますmyaddress.com/somedirectoryの代わりにmyaddress.com – Phil

+0

ftp.storebinaryはftp.storbinaryにする必要があります。 – Matt

-1

FTPバッチファイルを作成します(転送する必要があるファイルのリストを使用)。 pythonを使用してftp.exeを "-s"オプションで実行し、ファイルのリストを渡します。

これはkludgyですが、明らかにFTPlibはSTORコマンドで複数のファイルを受け入れていません。

ここには、サンプルのftpバッチファイルがあります。

*

OPEN inetxxx 
myuser mypasswd 
binary 
prompt off 
cd ~/my_reg/cronjobs/k_load/incoming 
mput *.csv 
bye 
  • 上記の内容は、 "abc.ftp" と呼ばれるファイルにあった場合 - その後、私のftpコマンドは

abc.ftp

のftp -sだろう

希望は役立ちます。

+0

...私はLinux上です; – Phil

+0

私はmyftp.ftpファイルをMSDOS固有の ".bat"ファイルではなく、「バッチ」ファイルとして暗示しました。 このファイルには、OS固有のコマンドではなくftpコマンドのリストが含まれます。 例えば、ここでは鉱山の一つだ - OPEN inetxxx は* バイナリ オフプロンプト CD〜/ my_reg/cronジョブ/ k_load着信/ MPUTをMYPASSWD MYUSER。csv bye – blispr

+0

この方法は移植性がありません。なぜなら、Pythonに独自のFTPクライアントがある場合、別のftpクライアントを使用する理由です。複数の場合は、SilentGhostのようにします。 – ghostdog74

0

あなたはJSONファイルに加えて、XMLファイルをftplibのことでアップロードする構成例を参照して、最初のURLの回答に質問とは異なる開始位置が、Python-scriptlines required to make upload-files from JSON-Callと次FTPlib-operation: why some uploads, but others not?

を見て、 :スクリプトライン024を見てください。

2番目のURLには、さらに多くのファイルのアップロードに関連するいくつかの側面があります。

jsonとxml以外のファイルタイプにも当てはまります.FTP_Upload関数を定義して実現する最後の2つのセクションの前には、別のエントリがあります。

関連する問題