标签: ftplib

使用ftplib下载目录树

这不会下载子目录的内容; 我怎么能这样做?

import ftplib
import configparser
import os

directories = []

def add_directory(line):
 if line.startswith('d'):
  bits = line.split()
  dirname = bits[8]
  directories.append(dirname)

def makeDir(archiveTo):
 for dir in directories:
  newDir = os.path.join(archiveTo, dir)
  if os.path.isdir(newDir) == True:
   print("Directory \"" + dir + "\" already exists!")
  else:
   os.mkdir(newDir)

def getFiles(archiveTo, ftp):
 files = ftp.nlst()
 for filename in files:
  try:
   directories.index(filename)
  except:
   ftp.retrbinary('RETR %s' % filename, open(os.path.join(archiveTo, filename), 'wb').write)

def runBackups():

 #Load INI
 filename = 'connections.ini'
 config = configparser.SafeConfigParser()
 config.read(filename)

 connections = config.sections() …
Run Code Online (Sandbox Code Playgroud)

python ftp ftplib

12
推荐指数
5
解决办法
2万
查看次数

如何在Python中使用ftplib上传二进制文件?

我的python2脚本很好地使用这种方法上传文件,但是python3提出了问题,而我仍然坚持下一步去哪里(谷歌搜索没有帮助).

from ftplib import FTP
ftp = FTP(ftp_host, ftp_user, ftp_pass)
ftp.storbinary('STOR myfile.txt', open('myfile.txt'))
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

Traceback (most recent call last):
  File "/Library/WebServer/CGI-Executables/rob3/functions/cli_f.py", line 12, in upload
    ftp.storlines('STOR myfile.txt', open('myfile.txt'))
  File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/ftplib.py", line 454, in storbinary
    conn.sendall(buf)
TypeError: must be bytes or buffer, not str
Run Code Online (Sandbox Code Playgroud)

我尝试将代码更改为

from ftplib import FTP
ftp = FTP(ftp_host, ftp_user, ftp_pass)
ftp.storbinary('STOR myfile.txt'.encode('utf-8'), open('myfile.txt'))
Run Code Online (Sandbox Code Playgroud)

但相反,我得到了这个

Traceback (most recent call last):
  File "/Library/WebServer/CGI-Executables/rob3/functions/cli_f.py", line 12, in upload
    ftp.storbinary('STOR myfile.txt'.encode('utf-8'), open('myfile.txt'))
  File "/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/ftplib.py", line 450, in storbinary
    conn = self.transfercmd(cmd) …
Run Code Online (Sandbox Code Playgroud)

python ftplib

12
推荐指数
1
解决办法
3万
查看次数

在ftplib storbinary中创建缺少的目录

我在python中使用pycurl通过ftp传输文件.我可以使用以下命令在远程服务器上自动创建缺少的目录:

c.setopt(pycurl.FTP_CREATE_MISSING_DIRS, 1)
Run Code Online (Sandbox Code Playgroud)

由于某些原因,我必须切换到ftplib.但我不知道如何在这里相同.是否有任何选项可以添加到storbinary函数来做到这一点?或者我必须手动创建目录?

python pycurl ftplib

12
推荐指数
2
解决办法
1万
查看次数

sftp使用ftplib

我需要使用sFTP从主机下载文件.

你知道是否有可能使用python ftplib做到这一点?我在这里看到了一个例子,但当我尝试连接时,我收到了EOFError.

我试过这段代码:

import ftplib
ftp = ftplib.FTP()
ftp.connect( "1.2.3.4", "22" )
Run Code Online (Sandbox Code Playgroud)

此方法在很长一段时间后返回错误,因此我无法执行登录调用.我无法尝试构造函数,FTP([host[, user[, passwd[, acct[, timeout]]]]])因为我的端口是22但ftplib默认是21.

如果我按照这个例子

ftp = ftplib.FTP("1.2.3.4")
ftp = ftplib.FTP("1.2.3.4","22")
Run Code Online (Sandbox Code Playgroud)

我收到拒绝连接,所以我无法输入任何用户名密码.你能帮助我吗?非常感谢你

python sftp ftplib

10
推荐指数
1
解决办法
2万
查看次数

Python ftplib超时

我正在尝试使用ftplib获取文件列表并下载自我上次检查以来的任何新文件.我到目前为止尝试运行的代码是:

#!/usr/bin/env python
from ftplib import FTP
import sys

host = 'ftp.***.com'
user = '***'
passwd = '***'

try:
    ftp = FTP(host)
    ftp.login(user, passwd)
except:
    print 'Error connecting to FTP server'
    sys.exit()

try:
    ftp.retrlines('LIST')
except:
    print 'Error fetching file listing'
    ftp.quit()
    sys.exit()

ftp.quit() 
Run Code Online (Sandbox Code Playgroud)

每当我运行它时,当我尝试检索列表时它会超时.有任何想法吗?

python ftplib

10
推荐指数
2
解决办法
1万
查看次数

如何使用Python ftplib获取FTP文件的修改时间

我正在尝试使用Python将CSV文件加载到Amazon S3.我需要知道CSV文件的修改时间.我正在使用ftplib将FTP连接到Python(2.7).

python ftp datetime ftplib python-2.7

10
推荐指数
1
解决办法
1万
查看次数

Python ftplib在下载之前无法获取文件大小?

我正在使用ftplib来传输文件.一切都很好.现在我想在下载之前获取目标文件的大小.

  1. 首先,我尝试使用ftp.size(filename)获取大小.服务器抱怨我不能在ascii模式下这样做.

  2. 然后我尝试使用ftp.sendcmd("binary")和ftp.sendcmd("bin")设置二进制模式.在这两种情况下,服务器抱怨"500二进制不理解"

在此实例中,ftplib可以在下载之前获取文件的大小吗?我不控制FTP服务器,也无法改变它的行为方式.

谢谢

python ftplib

9
推荐指数
3
解决办法
9657
查看次数

Python FTP按日期获取最新文件

我使用ftplib连接到ftp站点.我想获取最近上传的文件并下载它.我能够连接到ftp服务器并列出文件,我也将它们放在一个列表中并获得datefield转换.是否有任何功能/模块可以获取最近的日期并从列表中输出整行?

#!/usr/bin/env python

import ftplib
import os
import socket
import sys


HOST = 'test'


def main():
    try:
        f = ftplib.FTP(HOST)
    except (socket.error, socket.gaierror), e:
        print 'cannot reach to %s' % HOST
        return
    print "Connect to ftp server"

    try:
        f.login('anonymous','al@ge.com')
    except ftplib.error_perm:
        print 'cannot login anonymously'
        f.quit()
        return
    print "logged on to the ftp server"

    data = []
    f.dir(data.append)
    for line in data:
        datestr = ' '.join(line.split()[0:2])
        orig-date = time.strptime(datestr, '%d-%m-%y %H:%M%p')


    f.quit()
    return


if __name__ == '__main__':
    main() …
Run Code Online (Sandbox Code Playgroud)

python linux ftp ftplib

9
推荐指数
3
解决办法
1万
查看次数

从FTP python中读取缓冲区中的文件

我试图从FTP服务器读取文件.该文件是一个.gz文件.我想知道在套接字打开时是否可以对此文件执行操作.我尝试按照两个StackOverflow问题中提到的内容来阅读文件而无需写入磁盘从FTP读取文件而不下载但未成功.

我知道如何在下载的文件中提取数据/工作,但我不确定我是否可以动态执行.有没有办法连接到网站,在缓冲区中获取数据,可能做一些数据提取和退出?

尝试StringIO时出现错误:

>>> from ftplib import FTP
>>> from StringIO import StringIO
>>> ftp = FTP('ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/PMC-ids.csv.gz')

Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
ftp = FTP('ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/PMC-ids.csv.gz')
File "C:\Python27\lib\ftplib.py", line 117, in __init__
self.connect(host)
File "C:\Python27\lib\ftplib.py", line 132, in connect
self.sock = socket.create_connection((self.host, self.port), self.timeout)
File "C:\Python27\lib\socket.py", line 553, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
gaierror: [Errno 11004] getaddrinfo failed
Run Code Online (Sandbox Code Playgroud)

我只需要知道如何将数据放入某个变量并在其上循环,直到读取FTP文件为止.

感谢您的时间和帮助.谢谢!

python ftp stream ftplib

9
推荐指数
2
解决办法
2万
查看次数

检查Python FTP连接

我有一个FTP连接,我从中下载许多文件并在其间处理它们.我希望能够检查我的FTP连接之间没有超时.所以代码看起来像:

conn = FTP(host='blah')
conn.connect()
for item in list_of_items:
    myfile = open('filename', 'w')
    conn.retrbinary('stuff", myfile)
    ### do some parsing ###
Run Code Online (Sandbox Code Playgroud)

如何在### do some parsing ###线路超时的情况下检查我的FTP连接?

python ftplib

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

ftplib ×10

python ×10

ftp ×4

datetime ×1

linux ×1

pycurl ×1

python-2.7 ×1

sftp ×1

stream ×1