如何解决pywinauto启动exe时相对路径依赖文件找不到的问题
解决pywinauto启动exe时工作目录不匹配的问题
核心原因
你的exe程序使用相对路径./reqFile.txt读取文件时,会默认使用当前工作目录(即运行pywinauto代码的D://目录),而非exe自身所在的C://App目录,因此找不到依赖文件。
解决方案
方法1:启动exe时指定工作目录(推荐)
pywinauto的start()方法支持cwd参数,直接将其设置为exe所在的目录,exe启动后就会以自身目录作为工作目录,自然能找到同目录的reqFile.txt:
from pywinauto import Application exe_path = 'C://App//xxx.exe' exe_dir = 'C://App' Application().start(exe_path, cwd=exe_dir)
方法2:临时切换Python工作目录(备选)
如果无法使用cwd参数,可以先切换Python的工作目录到exe所在路径,启动exe后再切回原目录:
import os from pywinauto import Application exe_path = 'C://App//xxx.exe' exe_dir = 'C://App' # 保存原工作目录 original_dir = os.getcwd() try: # 切换到exe所在目录 os.chdir(exe_dir) # 启动exe Application().start(exe_path) finally: # 切回原工作目录,避免影响后续代码 os.chdir(original_dir)
方法3:修改exe程序(如果有权限)
如果可以修改exe的源代码,让程序读取自身目录下的文件,彻底摆脱对当前工作目录的依赖。以Python编写的exe为例:
import os import sys # 获取exe自身所在的绝对目录 exe_dir = os.path.dirname(os.path.abspath(sys.argv[0])) # 拼接依赖文件的绝对路径 file_path = os.path.join(exe_dir, 'reqFile.txt') with open(file_path, 'r') as f: # 读取文件内容 content = f.read()
内容的提问来源于stack exchange,提问作者Qiang Zhang
相关产品推荐
相关产品推荐

