远程在计算机之间发送文件

时间:2017-04-11 01:19:26

标签: python python-3.x ftp sftp updates

如何远程发送和接收文件,还可以通过python推送更新?我们在市场上有很多设备,它们都是基于Windows的设备。我们怎样才能将文件发送到这些机器并从这些机器接收文件?我们想用python来完成这个任务。任何教程或文章都可能很棒。

2 个答案:

答案 0 :(得分:1)

我不久前写了这个脚本,从本地笔记本电脑发送文件到我的远程SFTP服务器。机器有彼此的公钥:

import pysftp
import paramiko


fpaths = ['list/of', 'file/paths']

with pysftp.Connection(server, username='loginID') as sftp:
    with sftp.cd('target/directory'):
        for fpath in fpaths:
            print("Sending:", fpath)

            if not os.path.isdir(fpath):
                sftp.put(fpath)
                print("Permissioning", fpath)
                sftp.chmod(os.path.basename(fpath), 755)

            else:
                dirname = os.path.basename(fpath)
                if not sftp.isdir(dirname):
                    sftp.mkdir(dirname)
                    print("Permissioning", dirname)
                    sftp.chmod(os.path.basename(dirname), 755)

                sftp.put_r(fpath, dirname)

                sftp.walktree(dirname,
                              dcallback=lambda dname:print("Permissioning", dname) or sftp.chmod(dname, 755),
                              fcallback=lambda fname:print("Permissioning", fname) or sftp.chmod(fname, 755),
                              ucallback=lambda x:x)

答案 1 :(得分:1)

尝试使用ftplib包进行python ftp连接。 Here是一个小教程。

import ftplib

ftp = ftplib.FTP("www.python.org")
ftp.login("anonymous", "ftplib-example-1")

data = []

ftp.dir(data.append)

ftp.quit()

for line in data:
    print "-", line

执行上面的代码示例:

$ python ftplib-example-1.py
- total 34
- drwxrwxr-x  11 root     4127         512 Sep 14 14:18 .
- drwxrwxr-x  11 root     4127         512 Sep 14 14:18 ..
- drwxrwxr-x   2 root     4127         512 Sep 13 15:18 RCS
- lrwxrwxrwx   1 root     bin           11 Jun 29 14:34 README -> welcome.msg
- drwxr-xr-x   3 root     wheel        512 May 19  1998 bin
- drwxr-sr-x   3 root     1400         512 Jun  9  1997 dev
- drwxrwxr--   2 root     4127         512 Feb  8  1998 dup
- drwxr-xr-x   3 root     wheel        512 May 19  1998 etc
...

否则,您可以使用Paramiko使用SSH。使用最适合你的。

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(
    paramiko.AutoAddPolicy())
ssh.connect('127.0.0.1', username='none', 
    password='lol')

Ftplib代码参考:The ftplib module

Paramiko代码参考:SSH PROGRAMMING WITH PARAMIKO | COMPLETELY DIFFERENT