gpt4 book ai didi

python - 使用 Paramiko 将文件从一个目录移动到另一个目录

转载 作者:IT王子 更新时间:2023-10-29 00:25:25 27 4
gpt4 key购买 nike

我有一个脚本可以在 SFTP 服务器上创建 tmp 目录,然后在传输完成后将文件放入所述 /tmp 但是我需要从 /tmp< 移动文件 后退一个目录到根 /。使用 Paramiko 如何将文件从一个远程目录移动到另一个?

步骤指南:

Local files -----> Remote Temporary Dir ----> Remote root Dir

如果需要,代码如下:

#!/usr/bin/python

# --------------------------------------------------------------------
#import libraries
# --------------------------------------------------------------------
import paramiko as PM
import os
import datetime

# --------------------------------------------------------------------
# Global Variables
# --------------------------------------------------------------------

host = 'host IP address'
port = 22
username = 'Username'
password = '*********'

# Variable Paths

localPath = '/shares/MILKLINK/fromML'
remotePath = '/'
logPath = '/shares/MILKLINK/logs/PPcfg02.log'
SRCfiles = '/shares/MILKLINK/Milklink.cpy'

# --------------------------------------------------------------------
# Create LOG FILE
# --------------------------------------------------------------------

log = open(logPath, 'a')
log.write(datetime.datetime.now().isoformat()+'\n')

# Creating lockfile

if(os.path.isfile('LockSFTP')):
log.write("LOCK FILE STILL EXISTS!")
quit()
else:
os.system(">LockSFTP")

# --------------------------------------------------------------------
# Remove all files from /formML/
# --------------------------------------------------------------------

fileList = os.listdir(localPath)
for fileName in fileList:
try:
os.remove(localPath+"/"+fileName)
except OSError:
log.write("%s could not be deleted\n" % fileName)

# --------------------------------------------------------------------
# Create SFTP CONNECTION
# --------------------------------------------------------------------

log.write("Starting Connection...\n")
# SSH connection
ssh_Connection = PM.Transport((host, port))
ssh_Connection.connect(username = username, password = password)

# Creaat SFTP CLIENT SERVICES
sftp = PM.SFTPClient.from_transport(ssh_Connection)

log.write("Connection Established...\n")

remoteList = sftp.listdir(remotePath)
fileList = os.listdir(SRCfiles)
try:
sftp.chdir(remotePath+'/tmp')
except IOError:
sftp.mkdir(remotePath+'/tmp')
sftp.chdir(remotePath+'/tmp')

for fileName in fileList:
if 'comphaulier.asc' not in remoteList:
if 'Last' in fileName:
continue
else:
sftp.put(SRCfiles+'/'+fileName, remotePath+'/tmp/'+fileName)

log.write(fileName+" Transferred\n")
else:
log.write("Files Still Exist\n")
log.close()
quit()

checkList = sftp.listdir(remotePath)

if len(checkList) == 7:
sftp.put(SRCfiles+'/LastFile.lst', remotePath+'/LastFile.lst')
log.write("LastFile.lst Transferred\n")
else:
log.write("Not all files transferred!!!\n")
quit()

sftp.close()
ssh_Connection.close()

os.system("rm LockSFTP")

最佳答案

使用 sftp.rename :

sftp.rename(remotePath+'/tmp/'+fileName, remotePath+fileName)

请注意,如果源目录和目标目录位于不同的文件系统上,某些 SFTP 服务器会导致请求失败。


如果您需要将一组文件从一个文件夹移动到另一个文件夹,请参阅:
Archive all files from one SFTP folder to another in Python

关于python - 使用 Paramiko 将文件从一个目录移动到另一个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341975/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com