PyWinAuto调用Notepad++时,含空格文件名无法正常打开问题求助
解决PyWinAuto启动Notepad++时含空格文件名的问题
问题根源很明确:带空格的文件名直接拼进命令行后,会被系统当成多个独立参数。Notepad++收到的不是完整的F:\WORK\PyWinAuto\demo\has spaces.txt,而是被拆成了F:\WORK\PyWinAuto\demo\has和spaces.txt两个路径,自然会提示文件不存在。
给你两种可靠的解决方法:
方法1:给文件名包裹双引号
手动给拼接的文件名加上双引号,让命令行识别为单个完整路径:
# 用f-string更简洁易读 full_cmd = fr'C:\Program Files\Notepad++\notepad++.exe -multiInst -nosession "{filename}"' app = Application(backend="uia").start(full_cmd, timeout=10)
或者用字符串拼接(不推荐,容易出错):
full_cmd = r"C:\Program Files\Notepad++\notepad++.exe -multiInst -nosession" + f' "{filename}"'
方法2:使用start方法的args参数(更推荐)
PyWinAuto的start方法支持单独传入参数列表,它会自动处理带空格的参数,无需手动加引号,更安全:
app = Application(backend="uia").start( r"C:\Program Files\Notepad++\notepad++.exe", args=["-multiInst", "-nosession", filename], timeout=10 )
这种方式把每个命令行参数拆成列表元素,系统会正确解析带空格的filename,完全避免拼接错误。
你之前用字面量"has spaces.txt"没问题,就是因为手动加了引号,而遍历得到的filename变量没被包裹,才导致解析失败。
内容的提问来源于stack exchange,提问作者Rec
相关产品推荐
相关产品推荐

