我正在编写一个代码,用于将图像从本地目录中的文件夹复制到远程目录。我正在尝试使用scp。
因此,在我的目录中,有一个文件夹包含其中包含图像的子文件夹。主文件夹中还有不在子文件夹中的图像。我试图遍历子文件夹和单个图像并按公司排序,然后为这些图像组成相应的公司文件夹并将其复制到远程目录中。
我在远程目录中创建新公司文件夹时遇到问题。
这就是我所拥有的:
def imageSync():
path = os.path.normpath("Z:\Complete")
folders = os.listdir(path)
subfolder = []
#separates subfolders from just images in complete folder
for folder in folders:
if folder[len(folder)-3:] == "jpg":
pass
else:
subfolder.append(folder)
p = dict()
for x in range(len(subfolder)):
p[x] = os.path.join(path, subfolder[x])
sub = []
for location in p.items():
sub.append(location[1])
noFold= []
for s in sub:
path1 = os.path.normpath(s)
images = os.listdir(path1)
for image in images:
name = image.split("-")
comp = name[0]
pathway = os.path.join(path1, image)
path2 = "scp " + pathway + " blah@192.168.1.10: /var/files/ImageSync/" + comp
pathhh = os.system(path2)
if not os.path.exists(pathhh):
noFold.append(image)
代码还有更多内容,但我认为最重要的部分可以帮助解释我想要做的事情。
我已经创建了一个ssh
密钥以期使os.system
正常工作,但当我希望Path2成为远程服务器的路径时,它返回1。 (我试过这个:How to store the return value of os.system that it has printed to stdout in python?)
另外,如何正确检查远程目录中的公司文件夹是否已存在?
我看过Secure Copy File from remote server via scp and os module in Python和How to copy a file to a remote server in Python using SCP or SSH?,但我想我做错了。
我是Python的新手,所以感谢您的帮助!
答案 0 :(得分:0)
尝试将dirs和嵌套子目录从本地复制到远程:
cmd = "sshpass -p {} scp -r {}/* root@{}://{}".format(
remote_root_pass,
local_path,
remote_ip,
remote_path)
os.system(cmd)
不要忘记导入操作系统,
您可以检查返回的exitcode(0表示成功)
此外,您可能需要安装sshpass"
并更改/ etc / ssh / ssh_config StrictHostKeyChecking问 至: StrictHostKeyChecking no