FTPにファイルをアップロードするためのスクリプトを作成したいと思います。
ログインシステムはどのように機能しますか?私はこのようなものを探しています:
ftp.login=(mylogin)
ftp.pass=(mypass)
およびその他のサインイン資格情報。
を使用するftplib
と、次のように記述できます。
import ftplib
session = ftplib.FTP('server.address.com','USERNAME','PASSWORD')
file = open('kitten.jpg','rb') # file to send
session.storbinary('STOR kitten.jpg', file) # send the file
file.close() # close file and FTP
session.quit()
ftplib.FTP_TLS
FTP ホストで TLS が必要な場合は、代わりに使用してください。
それを取得するには、次を使用できますurllib.retrieve
。
import urllib
urllib.urlretrieve('ftp://server/path/to/file', 'file')
編集:
現在のディレクトリを見つけるには、次を使用しますFTP.pwd()
。
FTP.pwd(): サーバー上の現在のディレクトリのパス名を返します。
ディレクトリを変更するには、次を使用しますFTP.cwd(pathname)
。
FTP.cwd(パス名): サーバー上の現在のディレクトリを設定します。
Python には ftplib モジュールを使用する可能性が高いでしょう。
import ftplib
ftp = ftplib.FTP()
host = "ftp.site.uk"
port = 21
ftp.connect(host, port)
print (ftp.getwelcome())
try:
print ("Logging in...")
ftp.login("yourusername", "yourpassword")
except:
"failed to login"
これにより、FTP サーバーにログインします。そこから何をするかはあなた次第です。あなたの質問は、本当に必要な他の操作を示していません。
ここで同様の質問に答えたところ
です。FTP サーバーが Fabric と通信できる場合は、Fabric にご連絡ください。raw を行うよりもはるかに優れていftp
ます。
からの FTP アカウントを持っているdotgeek.com
ので、これが他の FTP アカウントで機能するかどうかはわかりません。
#!/usr/bin/python
from fabric.api import run, env, sudo, put
env.user = 'username'
env.hosts = ['ftp_host_name',] # such as ftp.google.com
def copy():
# assuming i have wong_8066.zip in the same directory as this script
put('wong_8066.zip', '/www/public/wong_8066.zip')
ファイルを名前を付けて保存し、ローカルfabfile.py
で実行します。fab copy
yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
繰り返しますが、常にパスワードを入力したくない場合は、追加するだけです
env.password = 'my_password'
以下の機能を使用できます。まだテストしていませんが、うまくいくはずです。宛先はディレクトリ パスであり、ソースは完全なファイル パスであることを忘れないでください。
import ftplib
import os
def uploadFileFTP(sourceFilePath, destinationDirectory, server, username, password):
myFTP = ftplib.FTP(server, username, password)
if destinationDirectory in [name for name, data in list(remote.mlsd())]:
print "Destination Directory does not exist. Creating it first"
myFTP.mkd(destinationDirectory)
# Changing Working Directory
myFTP.cwd(destinationDirectory)
if os.path.isfile(sourceFilePath):
fh = open(sourceFilePath, 'rb')
myFTP.storbinary('STOR %s' % f, fh)
fh.close()
else:
print "Source File does not exist"