标签: ftplib

Python:用UTF-8读取Ftp文件列表?

嗨,我正在使用模块ftplib.并使用以下代码列出我的文件:

files=[]
files = ftp.nlst()
Run Code Online (Sandbox Code Playgroud)

并使用以下代码将它们写入文本文件:

for item in files:
    filenames.write(item +'\n')
Run Code Online (Sandbox Code Playgroud)

但是有一个编码问题,如果我的文件名有'ı,ğ,ş'字符,它无法读取这个并写入文件'?' 代替.

如何正确阅读?

python ftp utf-8 ftplib python-3.x

8
推荐指数
2
解决办法
3456
查看次数

Python FTP应用程序中的代理

我正在使用Python ftplib开发一个FTP客户端.如何添加代理支持(我见过的大多数FTP应用程序似乎都有)?我特别想到SOCKS代理,还有其他类型...... FTP,HTTP(甚至可以在FTP程序中使用HTTP代理吗?)

有什么想法怎么做?

python ftp proxy ftplib

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

ftp发送python bytesio流

我想从一个ftp站点向另一个ftp站点发送带有python ftplib的文件,以避免文件读/写过程.

我创建了一个BytesIO流:

myfile=BytesIO()
Run Code Online (Sandbox Code Playgroud)

我使用retrbinary成功从ftp站点检索图像文件:

ftp_one.retrbinary('RETR P1090080.JPG', myfile.write)
Run Code Online (Sandbox Code Playgroud)

我可以将此内存对象保存为常规文件:

fot=open('casab.jpg', 'wb')

fot=myfile.readvalue()
Run Code Online (Sandbox Code Playgroud)

但我无法通过ftp与storbinary发送此流.我认为这会奏效:

ftp_two.storbinary('STOR magnafoto.jpg', myfile.getvalue())
Run Code Online (Sandbox Code Playgroud)

但不是.我得到一个很长的错误消息msg结尾'buf = fp.read(blocksize)AttributeError:'str'对象没有属性'read'

我也试过很多荒谬的组合,但没有成功.顺便说一句,我对myfoto.write真正做的事情也很困惑.不应该是myfoto.write()吗?

我对这个缓冲器的功能或要求也很无能为力.我想要的实现太复杂了吗?我应该在系统中使用中间写/读来ping文件吗?所有

编辑:感谢abanert,我把事情做好了.对于记录,storbinary参数是错误的,并且在发送之前需要myfile.seek(0)来"回放"流.这是一个工作片段,可以在两个ftp地址之间移动文件而无需中间物理文件写入:

import ftplib as ftp
from io import BytesIO

ftp_one=ftp.FTP(address1, user1, pass1)
ftp_two=ftp.FTP(address2, user2, pass2)
myfile=BytesIO()
ftp_one.retrbinary ('RETR imageoldname.jpg', myfile.write)
myfile.seek(0)
ftp_two.storbinary('STOR imagenewname.jpg', myfile)
ftp_one.close()
ftp_two.close()
myfile.close()
Run Code Online (Sandbox Code Playgroud)

python memory file ftplib bytesio

7
推荐指数
1
解决办法
4195
查看次数

在Python中从FTP文件夹获取最新文件(文件名包含空格)

我有一个要求,我必须从FTP文件夹中提取最新的文件,问题是文件名有空格,文件名具有特定的模式.以下是我实施的代码:

import sys
from ftplib import FTP
import os
import socket
import time
import pandas as pd
import numpy as np
from glob import glob
import datetime as dt
from __future__ import with_statement

ftp = FTP('')
ftp.login('','')
ftp.cwd('')
ftp.retrlines('LIST')

filematch='*Elig.xlsx'
downloaded = []

for filename in ftp.nlst(filematch):
  fhandle=open(filename, 'wb')
  print 'Getting ' + filename
  ftp.retrbinary('RETR '+ filename, fhandle.write)
  fhandle.close()
  downloaded.append(filename)

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

我知道我可以在ftp.dir()命令中添加一个空列表,但由于文件名有空格,我无法以正确的方式拆分它并选择我上面提到的类型的最新文件.

任何帮助都会很棒.

python ftplib python-2.7

7
推荐指数
1
解决办法
1256
查看次数

将值传递给ftp.retrbinary回调

我正在编写一个使用FTPLib来获取文件的模块.我想找到一种方法将值(除了块)传递给回调.基本上,我的回调是

 def handleDownload(block, fileToWrite):
    fileToWrite.write(block)
Run Code Online (Sandbox Code Playgroud)

我需要打电话

ftp.retrbinary('RETR somefile', handleDownload)
Run Code Online (Sandbox Code Playgroud)

并让它传递文件句柄.有没有办法做到这一点?

python ftp ftplib

6
推荐指数
1
解决办法
2460
查看次数

FTPES - 需要会话重用

所以,我正在尝试连接到ftp服务器以获取目录列表和下载文件.但是prot_p()函数之后的第一个命令引发了异常 - 从日志中产生这些错误:

*get* '150 Here comes the directory listing.\r\n'
*resp* '150 Here comes the directory listing.'
*get* '522 SSL connection failed; session reuse required: see require_ssl_reuse
option in vsftpd.conf man page\r\n'
*resp* '522 SSL connection failed; session reuse required: see require_ssl_reuse
 option in vsftpd.conf man page'
Traceback (most recent call last):
  File "C:\temp\download.py", line 29, in <module>
    files = ftps.dir()
  File "C:\Python27\lib\ftplib.py", line 522, in dir
    self.retrlines(cmd, func)
  File "C:\Python27\lib\ftplib.py", line 725, in retrlines
    return self.voidresp()
  File "C:\Python27\lib\ftplib.py", line …
Run Code Online (Sandbox Code Playgroud)

python ftp ftps ftplib python-2.7

6
推荐指数
2
解决办法
4798
查看次数

使用 Python 列出 FTP 中所有子目录中的所有文件

我是 Python 新手,我正在尝试列出 FTP 中所有子目录中的所有文件。FTP 和往常一样,就是这种格式。

 A
 B
 C
Run Code Online (Sandbox Code Playgroud)

子目录:

 AA
 BB
 CC
Run Code Online (Sandbox Code Playgroud)

['A', 'B', 'C']我可以使用列出目录ftp.nlist()。我想得到['AA', 'BB', 'CC']我的输出。我已经尝试并查找了很多以找到解决方案/提示来执行此操作。

python ftp ftplib subdirectory filelist

6
推荐指数
1
解决办法
7351
查看次数

使用ftplib在Python中设置FTP连接的超时

我正在试图设置FTP连接的超时时间:

class ftplib.FTP([host [,user [,passwd [,acct [,timeout]]]]])

返回FTP类的新实例.当给出主机时,方法调用connect(host).当给出用户时,另外调用login(user,passwd,acct)方法(其中passwd和acct默认为空字符串,如果没有给出).可选的timeout参数指定阻塞操作(如连接尝试)的超时(以秒为单位)(如果未指定,将使用全局默认超时设置).

问题是我创建连接的代码如下:

from ftplib import FTP
ftp = FTP('172.16.52.87')
ftp.login('username', 'password')
Run Code Online (Sandbox Code Playgroud)

如果我使用,我发现了一些问题:

ftp = FTP('172.16.52.87', 'username', 'password')
Run Code Online (Sandbox Code Playgroud)

然后我的问题是,如何设置超时?

我试过让一些参数为空但它不起作用:

ftp = FTP('172.16.52.87', '', '', '', '100')
Run Code Online (Sandbox Code Playgroud)

登录功能只有3个参数 login(user, passwd, acct)

有些想法?

问候

python ftp timeout ftplib

6
推荐指数
1
解决办法
8413
查看次数

使用 Python 读取存储在 FTP 中的 CSV 文件

我已经连接到FTP并且连接成功。

import ftplib
ftp = ftplib.FTP('***', '****','****')
listoffiles = ftp.dir()
print (listoffiles)
Run Code Online (Sandbox Code Playgroud)

我在此 FTP 中有一些 CSV 文件以及一些包含更多 CSV 的文件夹。

我需要识别此位置(主页)中的文件夹列表,并且需要导航到这些文件夹。我认为cwd命令应该有效。

我还读取了此 FTP 中存储的 CSV。我怎样才能做到这一点?有没有办法直接将 CSV 加载到 Pandas 中?

python csv ftp ftplib pandas

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

无法使用 ftplib 列出 FTP 目录 - 但 FTP 客户端可以工作

我正在尝试连接到 FTP,但无法运行任何命令。

ftp_server = ip
ftp_username = username
ftp_password = password

ftp = ftplib.FTP(ftp_server)
ftp.login(ftp_username, ftp_password)
'230 Logged on'

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

ftp.nlst引发此错误:

错误:
[WinError 10060] 连接尝试失败,因为连接方在一段时间后没有正确响应,或者因为连接的主机没有响应而建立连接失败


我已经使用 FileZilla(在同一台机器上运行)测试了连接,它工作正常。

这是 FileZilla 日志:

ftp_server = ip
ftp_username = username
ftp_password = password

ftp = ftplib.FTP(ftp_server)
ftp.login(ftp_username, ftp_password)
'230 Logged on'

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

python ftp ftplib

6
推荐指数
1
解决办法
1083
查看次数

标签 统计

ftplib ×10

python ×10

ftp ×8

python-2.7 ×2

bytesio ×1

csv ×1

file ×1

filelist ×1

ftps ×1

memory ×1

pandas ×1

proxy ×1

python-3.x ×1

subdirectory ×1

timeout ×1

utf-8 ×1