标签: ftplib

如何使用Python ftplib通过FTP下载文件

我有以下代码,可以轻松连接到FTP服务器并打开一个zip文件.我想将该文件下载到本地系统.怎么做?

# Open the file for writing in binary mode
print 'Opening local file ' + filename
file = open(filename, 'wb')

# Download the file a chunk at a time
# Each chunk is sent to handleDownload
# We append the chunk to the file and then print a '.' for progress
# RETR is an FTP command

print 'Getting ' + filename
ftp.retrbinary('RETR ' + filename, handleDownload)

# Clean up time
print 'Closing file ' + filename
file.close()
Run Code Online (Sandbox Code Playgroud)

python ftplib

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

将文件复制到服务器后的文件大小差异víaFTP

我创建了一个PHP脚本来更新本地目录中的实时Web服务器.我正在将脚本迁移到Python中.它在大多数情况下工作正常,但在PUT命令之后,文件的大小似乎会改变.因此,文件的大小与服务器上的文件大小不同.

一旦我从FTP服务器再次下载文件,唯一的区别是CR/LF标记.这让我很烦,因为相同的脚本正在比较要更新的文件的大小.此外,如果它意味着什么,该脚本在PHPvíaftp_put中完美运行.

from ftplib import FTP

ftpserver = "myserver"
ftpuser = "myuser"
ftppass = "mypwd"

locfile =  "g:/test/style.css"
ftpfile =  "/temp/style.css"

try:
    ftp = FTP(ftpserver, ftpuser, ftppass)
except:
    exit ("Cannot connect")

f = open (locfile, "r")
try:
    ftp.delete (ftpfile)
except:
    pass

# ftp.sendcmd ("TYPE I")
# ftp.storlines("STOR %s" % ftpfile, f)
ftp.storbinary("STOR %s" % ftpfile, f)
f.close()

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

有什么建议?

php python ftp webserver ftplib

41
推荐指数
1
解决办法
3765
查看次数

是否可以在不使用Python编写FTP文件的情况下读取它们?

我试图使用Python的ftplib读取文件而不编写它们.大致相当于:

def get_page(url):
    try:
        return urllib.urlopen(url).read()
    except:
        return ""
Run Code Online (Sandbox Code Playgroud)

但使用FTP.

我试过了:

def get_page(path):
    try:
        ftp = FTP('ftp.site.com', 'anonymous', 'passwd')
        return ftp.retrbinary('RETR '+path, open('page').read())
    except:
        return ''
Run Code Online (Sandbox Code Playgroud)

但这不起作用.文档中的唯一示例涉及使用该ftp.retrbinary('RETR README', open('README', 'wb').write)格式编写文件.是否可以在不先写入的情况下读取ftp文件?

python ftp ftplib

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

Python-FTP下载目录中的所有文件

Python newb在这里请耐心等待.我正在整理一个脚本,通过FTP下载目录中的所有文件.到目前为止,我已经设法连接并获取一个文件,但我似乎无法批量工作(从目录中获取所有文件)这是我到目前为止:

from ftplib import FTP
import os, sys, os.path

def handleDownload(block):
    file.write(block)
    print ".",

ddir='C:\\Data\\test\\'
os.chdir(ddir)
ftp = FTP('test1/server/')

print 'Logging in.'
ftp.login('user1\\anon', 'pswrd20')
directory = '\\data\\test\\'

print 'Changing to ' + directory
ftp.cwd(directory)
ftp.retrlines('LIST')

print 'Accessing files'

for subdir, dirs, files in os.walk(directory):
    for file in files: 
        full_fname = os.path.join(root, fname);  
        print 'Opening local file ' 
        ftp.retrbinary('RETR C:\\Data\\test\\' + fname,
                       handleDownload,
                       open(full_fname, 'wb'));
        print 'Closing file ' + filename
        file.close();
ftp.close()
Run Code Online (Sandbox Code Playgroud)

我打赌你可以告诉我,当我运行它时它没有做太多,所以任何改进建议都将非常感激

PS这不是作业:DD

谢谢!!

python ftp ftplib

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

Python ftplib - 指定端口

我想用Python的ftplib客户端(而不是默认端口21)指定端口.

这是代码:

from ftplib import FTP
ftp = FTP('localhost') # connect to host, default port
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来指定替代端口?

python ftp ftplib

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

TypeError:预期的str,bytes或os.PathLike对象,而不是_io.BufferedReader

我正在尝试遍历本地计算机上的文件夹中的一组文件,并使用此代码(Python 3.6.1 32位,Windows 10 64位)仅将文件名包含"Service_Areas"的文件上载到我的FTP站点):

ftp = FTP('ftp.ftpsite.org')
username = ('username')
password = ('password')
ftp.login(username,password)
ftp.cwd(username.upper())
ftp.cwd('2017_05_02')

for i in os.listdir('C:\FTP_testing'):
    if i.startswith("Service_Area"):
        local_path = os.path.join('C:\FTP_testing',i)
        file = open(local_path,'rb')
        ftp.storbinary("STOR " + i, open(file, 'rb'))
        file.close()
        continue
    else:
        print('nope')

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

但我收到这个错误:

Traceback (most recent call last):
  File "C:\Users\user\Desktop\Test1.py", line 32, in <module>
    ftp.storbinary("STOR " + str(i), open(file, 'rb'))
TypeError: expected str, bytes or os.PathLike object, not _io.BufferedReader
Run Code Online (Sandbox Code Playgroud)

有什么建议?

python ftplib

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

ftplib检查文件是否是文件夹?

如何使用ftplib检查远程ftp上的文件是否是文件夹?

我现在最好的方法是做一个nlst,并遍历每个文件的调用大小,如果文件出错那么它是一个文件夹?

有没有更好的办法?我无法解析列表的输出,因为有大约十几个不同的ftp服务器(很多很老.)

我该怎么办?

python ftp ftplib

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

Python:在路由器后面打开一个侦听端口(upnp?)

我开发了一个应用程序,它本质上只是一个小的ftp服务器,能够指定您希望在启动时共享的目录.我正在使用ftplib作为服务器,因为它很容易生病.我唯一的问题是,如果你在路由器后面,你必须手动转发路由器上的端口,我发现它对我的用户(又名同事/客户端)来说有点太复杂了.

所以我一直在寻找一个开放端口的简单解决方案,但我发现大多数API太宽泛而且超出我的想象.有人知道一个相对简单的解决方案吗?

注意:它实际上只会在Windows上使用,尽管欢迎跨平台兼容性.如果有一个更简单的Windows解决方案,那么我会选择它.

谢谢!

python upnp ftplib

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

Python FTP隐式TLS连接问题

我需要连接到能够使用lftp成功连接的FTPS服务器.但是,当我尝试使用Python ftplib.FTP_TLS时,它会超时,堆栈跟踪显示它正在等待服务器发送欢迎消息等.有谁知道问题是什么以及如何克服?我想知道是否需要在服务器端进行某些操作,但是lftp客户端如何正常工作.任何帮助是极大的赞赏.

这是堆栈跟踪:

    ftp = ftplib.FTP_TLS()  
    ftp.connect(cfg.HOST, cfg.PORT, timeout=60)
  File "C:\Users\username\Softwares\Python27\lib\ftplib.py", line 135, in connect  
    self.welcome = self.getresp()  
  File "C:\Users\username\Softwares\Python27\lib\ftplib.py", line 210, in getresp  
    resp = self.getmultiline()  
  File "C:\Users\username\Softwares\Python27\lib\ftplib.py", line 196, in getmultiline  
    line = self.getline()  
  File "C:\Users\username\Softwares\Python27\lib\ftplib.py", line 183, in getline  
    line = self.file.readline()  
  File "C:\Users\username\Softwares\Python27\lib\socket.py", line 447, in readline  
    data = self._sock.recv(self._rbufsize)  
socket.timeout: timed out  
Run Code Online (Sandbox Code Playgroud)

使用lftp成功登录到同一个ftps服务器:

$ lftp
lftp :~> open ftps://ip_address:990
lftp ip_address:~> set ftps:initial-prot P
lftp ip_address:~> login ftps_user_id  ftps_user_passwd
lftp sftp_user_id@ip_address:~> ls
ls: Fatal error: …
Run Code Online (Sandbox Code Playgroud)

python ftp ssl ftps ftplib

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

使用Python脚本将文件夹从本地系统上载到FTP

我必须使用Python脚本自动将文件夹上传到FTP.我可以上传单个文件,但不能上传包含子文件夹和文件的文件夹.我做了很多搜索,但都失败了.有人可以帮助我吗?提前致谢.

#! /usr/bin/python

import ftplib
s = ftplib.FTP('serverip','usrname','password') 
file = '/home/rock/test.txt'
ftppath = '/IT'
filename = "rak"
s.cwd(ftppath)
f = open(file,'rb')                
s.storbinary('STOR ' + filename, f)         

f.close()                                
s.quit()
Run Code Online (Sandbox Code Playgroud)

python ftp ftplib

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

标签 统计

ftplib ×10

python ×10

ftp ×7

ftps ×1

php ×1

ssl ×1

upnp ×1

webserver ×1