Python脚本通过FTP上传文件

Fru*_*der 62 python ftp upload screenshot image

我想制作一个脚本将文件上传到FTP.

登录系统如何工作?我正在寻找这样的东西:

ftp.login=(mylogin)
ftp.pass=(mypass)
Run Code Online (Sandbox Code Playgroud)

还有任何其他签到凭证.

K Z*_*K Z 166

使用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()
Run Code Online (Sandbox Code Playgroud)

使用ftplib.FTP_TLS你的FTP主机需要TLS来代替.


要检索它,您可以使用urllib.retrieve:

import urllib 

urllib.urlretrieve('ftp://server/path/to/file', 'file')
Run Code Online (Sandbox Code Playgroud)

编辑:

要查找当前目录,请使用FTP.pwd():

FTP.pwd():返回服务器上当前目录的路径名.

要更改目录,请使用FTP.cwd(pathname):

FTP.cwd(pathname):设置服务器上的当前目录.

  • @DawsonHensel 您可以使用“print ftp.pwd()”来显示您所在的当前路径。 (2认同)

gbo*_*tti 23

ftplib现在支持上下文管理器,所以我想它可以变得更容易

from ftplib import FTP
from pathlib import Path

file_path = Path('kitten.jpg')

with FTP('server.address.com', 'USER', 'PWD') as ftp, open(file_path, 'rb') as file:
        ftp.storbinary(f'STOR {file_path.name}', file)
Run Code Online (Sandbox Code Playgroud)

无需关闭文件或会话

  • 如果有人在使用接受的答案将文件从 Windows 上传到 FTP 服务器时遇到问题,那么此方法对我有用。 (2认同)

Ana*_*and 8

尝试这个:

#!/usr/bin/env python

import os
import paramiko 
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username="username", password="password")
sftp = ssh.open_sftp()
localpath = '/home/e100075/python/ss.txt'
remotepath = '/home/developers/screenshots/ss.txt'
sftp.put(localpath, remotepath)
sftp.close()
ssh.close()
Run Code Online (Sandbox Code Playgroud)

  • 问题是关于通过 FTP 传输文件,而不是 SFTP。 (7认同)
  • 同意,在 ftp 上执行此路由时,使用 ProxyCommand 时经常会出现“SSHException:读取 SSH 协议横幅时出错”错误。 (2认同)

Tad*_*dgh 6

您很可能希望将ftplib模块用于python

 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"
Run Code Online (Sandbox Code Playgroud)

这会将您登录到FTP服务器.你从那里做什么取决于你.您的问题并未表明任何其他真正需要的操作.

  • 这不能回答问题 (3认同)