Python调用带参数的EXE文件无输出问题求助
Python调用带参数的EXE文件无输出问题求助
嘿,我看懂你的问题啦!核心问题出在你生成EXE的代码上——你用了input()来获取文件路径,但input()是从**标准输入(控制台手动输入)**读取内容的,根本没处理命令行参数,所以你用subprocess传的路径参数完全没被EXE接收到,自然没输出啦。
给你两种解决思路,按需选择:
思路1:修改EXE代码,让它读取命令行参数(推荐)
把生成EXE的Python代码改成读取命令行参数的形式,用sys.argv来获取你传递的文件路径:
import sys # 先检查有没有传参数 if len(sys.argv) < 2: print("请传入要读取的文件路径作为命令行参数哦!") sys.exit(1) # sys.argv[0]是程序本身路径,sys.argv[1]就是你传的第一个参数 file_path = sys.argv[1] with open(file_path, 'r') as file: y = file.read() while True: print(y)
改完之后重新打包成EXE(比如用PyInstaller之类的工具),然后你原来的subprocess代码就可以正常工作了,甚至可以换成更推荐的subprocess.run:
import subprocess exe = r'C:\Users\barha\PycharmProjects\pythonProject7\exe.exe' text = r'C:\Users\barha\PycharmProjects\pythonProject7\text.txt' subprocess.run([exe, text])
思路2:不改EXE,通过标准输入传递路径
如果你不想重新打包EXE,可以把文件路径通过标准输入传给它,毕竟原代码是用input()读取的:
import subprocess exe = r'C:\Users\barha\PycharmProjects\pythonProject7\exe.exe' text = r'C:\Users\barha\PycharmProjects\pythonProject7\text.txt' # 把路径转成字节流传给EXE的标准输入 subprocess.run(exe, input=text.encode('utf-8'))
不过要注意,原代码里有while True循环,会一直输出文件内容,你可能需要手动终止进程哦。
备注:内容来源于stack exchange,提问作者Дима
相关产品推荐
相关产品推荐

