Python:将CSV文件从一个RPi复制到另一个

问题描述:

我有2个Raspberry Pi的3,运行Ubuntu Mate。 在每个RPi上有一个要读取或复制的CSV文件(取决于它是否为主)。Python:将CSV文件从一个RPi复制到另一个

python代码在RPI#1上运行,需要从RPi#2复制文件(并将它们作为本地文件读取)。

如何使用SSH进行操作?

+0

检查[布料](http://www.fabfile.org/)为Python 2.7或[Fabric3](https://pypi.python.org/pypi/Fabric3/)为Python 3.6。 –

+0

这是您的问题的几种解决方案,其中许多在操作系统级别和超出范围。 –

+0

@KlausD。我不明白你的答案。我使用的是Ubuntu,我想用Python读取文件,而不是通过操作系统 –

选项太多。但总的来说我掏出除非你有一个很好的理由不:

import subprocess 
result = subprocess.run(['ssh', '[email protected]', 'cat /var/lol/cats.csv'], stdout=subprocess.PIPE) 
result.check_returncode() 
cats_csv = result.stdout 

我们告诉Python来运行这个命令:ssh [email protected] "cat /var/lol/cats.csv"。因此ssh进程将连接到[email protected]并在远程上运行命令cat /var/lol/cats.csv。你可以通过在你的shell中运行这条命令来试试。该命令的输出由Python捕获,我们必须使用stdout=subprocess.PIPE进行配置。拨打check_returncode只是为了在出现问题时中止,如连接错误或找不到文件。

而不是立即捕获整个CSV,你也可以复制它,然后在本地打开它。这将允许处理大文件。那么命令将是['rsync', '[email protected]:/var/lol/cats.csv', '/tmp/cats.csv']。如果rsync不可用,请使用scp

+0

首先 - 谢谢!它工作正常。其次,你能否解释语法,你是否推荐将它写入本地文件? –

+1

我已经添加了解释。如果将它保存到文件中,它必须适合您的文件系统。如果你将它变成一个变量,它必须适合RAM。这取决于你如何处理它。 – sba

另一个有用的方法,因为它不是一个大文件 - 将其复制到本地RPi。

result=subprocess.run(['scp','[email protected]:/home/guy/PythonProjects/schedule.csv','/home/guy/schedule_192.168.2.112.csv'],stdout=subprocess.PIPE)