我正在尝试通过SSH将文件复制到Raspberry pi,并且我想从python执行Windows终端命令,因此以后可以将其自动化。但是,每次尝试执行它都会收到错误。当我手动将SSH命令放入控制台时,它会按预期工作,但从此脚本中调用它时,它将无法工作。我以前从未在python中调用过控制台命令,因此我正在尝试使用发现的其他一些线程。我可能做错了什么?我也尝试过运行os.system
,它没有返回错误,但是也没有按原样执行命令。我正在使用Python 3.8.1。这是我的脚本,也是错误,感谢您的帮助。
代码:
import subprocess
subprocess.run(['scp <text file path> pi@<IP>:here/'])
print ("done")
错误
Traceback (most recent call last):
File "<script file path>.py", line 3, in <module>
subprocess.run(['scp <text file path>.txt pi@<IP>:here/'])
File "<python file path>\Python38-32\lib\subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File <python file path>\Python38-32\lib\subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File <python file path>\Python38-32\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
编辑:这是当我分割一系列命令时遇到的错误:
代码:
import subprocess
subprocess.run(['scp', '<text file path>.txt', 'pi@<IP>:here/'])
print ("done")
错误:
Traceback (most recent call last):
File "<script file path>.py", line 3, in <module>
subprocess.run(['scp', '<text file path>.txt', 'pi@<IP>:here/'])
File "<python file path>\Python38-32\lib\subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "<python file path>\Python38-32\lib\subprocess.py", line 854, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File <Python file path>\Python38-32\lib\subprocess.py", line 1307, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified
当然,我放入<>的所有内容都是为了保护我的信息。
答案 0 :(得分:0)
要么删除列表,然后让Shell解析字符串
import subprocess
subprocess.run('scp <text file path> pi@<IP>:here/', shell=True)
print ("done")
或将命令自己拆分为各个组成部分
import subprocess
subprocess.run(['scp', <text file path>, 'pi@<IP>:here/'])
print ("done")
对于您的错误,<text file path>
是相对错误的相对路径(鉴于当前工作目录),或者scp
不在您的PATH
中。从错误消息中还不清楚找不到哪个文件。
答案 1 :(得分:0)
对于任何回到这篇文章的人来说,解决方案是使用不同的方法来运行脚本。我正在使用似乎不喜欢它的默认 python IDLE。尝试在您计算机的控制台中运行该脚本。