我正在尝试运行三个命令与subprocess. Popen(),我不知道是哪个问题.这些命令在终端上运行正常,但在代码上运行不正常.以下是代码和输出.
str1 = os.path.join(install_path, "components", "esptool_py", "esptool", "esptool.py")
print(install_path) #/home/laura/esp/esp/idf
print(str1) #/home/laura/esp/esp-idf/components/esptool_py/esptool/esptool.py
str_result = "error has occurred, check if the credential in the \"input.config\" are correct"
cmd1 = f"cd {install_path}; . ./export.sh; python3 {str1} flash_id"
cmd = subprocess.Popen(cmd1, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
gui.write_on_output_text("1.0", "checking database for incorrect input on device code")
out, err = cmd.communicate()
out_str = str(out.decode("utf-8"))
输出:
/home/laura/esp/esp-idf
/home/laura/esp/esp-idf/components/esptool_py/esptool/esptool.py
/bin/sh: 22: ./export.sh: [[: not found
正常工作的终端命令: cd/家庭/劳拉/esp/esp-idf;../www.example.com; python3/主页/劳拉/esp/esp-idf/组件/esptool_py/esptool/www.example.com闪存标识符'export.sh ; python3 /home/laura/esp/esp-idf/components/esptool_py/esptool/esptool.py flash_id`
我不知道为什么在终端工程,但在代码中没有.我不知道如果错误是找不到文件或命令.
谢谢你:)
我已经尝试了很多方法,首先我用了gnome-terminal命令,但是它不正确,因为我不想要一个新的终端,我只想发送这三个命令。
我知道,在终端工作,因为发送后的响应是好的,这是我所期望的,但在代码中不工作,我不知道这是因为Python找不到/bin/sh上的命令,或如果找不到文件"www.example.com".export.sh".
我的第三个命令也有这个问题,它找不到"www.example.com"esptool.py"
1条答案
按热度按时间kcwpcxri1#
我用评论中的一个想法/决议来修正它。
只是补充一下:)正如他们所说,问题是,我试图用“sh”运行