python - 使用 Python 将文件从一个 FTP 位置传输到另一个位置

标签 python ftp file-transfer ftplib

我正在尝试执行在两个不同 FTP 位置之间传输文件的任务。简单的目标是我希望使用 Python 脚本在最后几个小时内将特定文件类型从 FTP 位置 A 传输到 FTP 位置 B。

我正在使用 ftplib 来执行该任务,并将以下代码放在一起。

到目前为止,对于 from_sock 变量中定义的单个文件,文件传输工作正常,但是当我想要循环遍历过去 2 小时内创建的所有文件并复制它们时,我遇到了障碍。因此,我编写的脚本基本上是复制单个文件,但我不想移动过去 2 小时内创建的具有特定扩展名示例 *.jpg 的所有文件。我厌倦了使用 MDTM 来查找文件修改时间,但我无法以正确的方式实现。

非常感谢对此的任何帮助。以下是当前代码:

import ftplib
srcFTP = ftplib.FTP("test.com", "username", "pass")
srcFTP.cwd("/somefolder")
desFTP = ftplib.FTP("test2.com", "username", "pass")
desFTP.cwd("/")
from_Sock = srcFTP.transfercmd("RETR Test1.text")
to_Sock = desFTP.transfercmd("STOR test1.text")
state = 0
while 1:
    block = from_Sock.recv(1024)
    if len(block) == 0:
        break
    state += len(block)
    while len(block) > 0:
        sentlen = to_Sock.send(block)
        block = block[sentlen:]     
print state, "Total Bytes Transferred"
from_Sock.close()
to_Sock.close()
srcFTP.quit()
desFTP.quit()

谢谢, DD

最佳答案

这里有一段简短的代码,它获取路径并通过 ftp 上传扩展名为 .jpg 的每个文件。这并不完全是您想要的,但我偶然发现了您的答案,这可能会对您有所帮助。

import os
from ftplib import FTP

def ftpPush(filepathSource, filename, filepathDestination):
    ftp = FTP(IP, username, password)
    ftp.cwd(filepathDestination)

    ftp.storlines("STOR "+filename, open(filepathSource+filename, 'r')) 
    ftp.quit()

path = '/some/path/'
for fileName in os.listdir(path):
    if fileName.endswith(".jpg"):
        ftpPush(filepathSource=path, filename=fileName, filepathDestination='/some/destination/')

可以使用 this example 在 ftp 服务器上检查文件的创建时间。 .

fileName = "nameOfFile.txt"
modifiedTime = ftp.sendcmd('MDTM ' + fileName)
# successful response: '213 20120222090254'
ftp.quit()

现在您只需检查文件何时被修改,如果低于您希望的阈值则下载它,然后将其上传到另一台计算机。

关于python - 使用 Python 将文件从一个 FTP 位置传输到另一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26131636/

相关文章:

python - Rpy2 错误 wac-a-mole : R_USER not defined

java - 在android中,在FTP服务器上传文件时出错

browser - 如何在 Google Compute Engine VM 上打开浏览器

javascript - Cordova FileTransfer 发送文件但未收到任何内容

python - 编写接受一维和二维 numpy 数组的函数?

java - Java 中的 python pickle.dumps 和 struct.pack

python - 生成多个敌人 pygame

python - 如何使用Python中的套接字库将服务器连接到其他计算机?

python - FTP 下载卡住整个应用程序

http - 我可以使用 HTTP 传输的最大文件大小是多少?并使用 FTP?