Python RPi - 从另一个脚本运行脚本时找不到文件

Posted

技术标签:

【中文标题】Python RPi - 从另一个脚本运行脚本时找不到文件【英文标题】:Python RPi - File not found when running script from another script 【发布时间】:2018-03-01 22:36:17 【问题描述】:

我正在尝试使用 Raspbian 在 Raspberry Pi 3 上从另一个 python 脚本运行 python 脚本。几个小时以来,我一直试图找到方法来做到这一点,但没有找到任何有效的方法。我尝试了一些方法,但它要么说没有执行文件的权限,要么找不到它。我不知道我做错了什么。我需要通过新控制台(新进程)中的主脚本运行其他脚本的多个实例并保持它们运行(我不希望它们向主脚本返回任何内容)。谁能帮我?因为在 Windows 上它真的很容易,因为该程序运行良好,直到我尝试在 Linux 上运行它(在 Windows 上,我使用了 os.startfile)。

在 test.py 中:

print("test1")
input()

在 main.py 中:

import os
import subprocess
print("main")
os.system("python test.py")
input()

在控制台中: 主要的 python:无法打开文件'test.py':[Errno 2]没有这样的文件或目录

在 main.py 中:

import os
import subprocess
print("main")
subprocess.Popen("python test.py",shell=True)
input()

在控制台中: 主要的 python:无法打开文件'test.py':[Errno 2]没有这样的文件或目录

在 main.py 中:

import os
import subprocess
print("main")
subprocess.call("python test.py",shell=True)
input()

在控制台中: 主要的 python:无法打开文件'test.py':[Errno 2]没有这样的文件或目录

我尝试了更多方法,但我不记得了。也许我做错了什么?

编辑:我现在可以运行脚本而 os.chdir 没有任何问题(感谢 J H)。我现在的问题是它在与 main.py 相同的控制台窗口中打印测试,我需要它为 test.py 创建另一个进程。有什么解决办法吗?

编辑 2:最后我可以从 main.py 开始一个新的 test.py 进程!我使用 os.system('xdg-open "test.py"') 使用默认应用程序打开 test.py。无论如何感谢J H,否则它会继续说找不到文件。

最终的 main.py:

import os
print("main")
os.chdir('/home/pi/Desktop/')
os.system('xdg-open test.py')
input()

提前致谢!

【问题讨论】:

这些文件是否在同一个目录中?你的代码对我有用(在 linux 上) 是的,它们在同一个目录中(我认为,据说,我需要 os.chdir(),因为在这种情况下没有网站这么说)。也许它与 Raspbian 有关。 【参考方案1】:

打印出os.getcwd() 将帮助您进行调试。

在执行 test.py 之前,要么提供完全限定的路径名​​ /some/where/test.py,要么使用 os.chdir('/some/where')

【讨论】:

我试过了,它奏效了。但问题是它在与主脚本相同的控制台窗口中打印测试,我需要它来打开另一个控制台窗口。 您不必直接使用 python 解释器。您可以分叉出调用xterm -e python test.py 的Bourne 脚本,或者os.system() 可以直接执行此操作。手册页位于 x.org/archive/X11R6.8.1/doc/xterm.1.html 我尝试使用 os.system() 并没有像 Windows 那样打开新窗口(顺便说一下,我是 Python 初学者)。 您可能正在使用 KDE 或 Gnome 或其他东西。无论您在控制台输入什么命令并打开一个新窗口,只需将该命令提供给 os.system()。查看ps axuw 输出以查看当前正在运行的命令。 对不起。没看懂你说的。你能解释一下吗?我正在使用 Raspbian(如果这就是你所说的)。当我使用 os.chdir 和 os.system 执行脚本时,它不会打开一个新窗口。它的写法与 main.py 窗口相同。

以上是关于Python RPi - 从另一个脚本运行脚本时找不到文件的主要内容,如果未能解决你的问题,请参考以下文章

从PHP运行脚本时,RPi GPIO控件丢失(没有任何错误)

我可以从另一个正在运行的 python 脚本访问列表吗

rpi-rf_send 脚本 + python raspberry pi 中的硬编码射频代码

通过桌面图标运行 bash 脚本时找不到节点命令

尝试从 R 脚本渲染闪亮的 flexdashboard 时找不到错误对象输出

从另一个脚本 Python3 调用脚本