You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python调用含空格路径的批处理文件无法识别的解决方法

解决Python运行带空格路径的批处理文件问题

嘿,这个坑我之前踩过!你遇到的问题本质是os.system()会把传入的字符串直接丢给系统命令行执行,而命令行默认会把空格当成命令/参数的分隔符——所以它才会只识别到Practice就停了,把后面的Folder当成了另一个参数。

给你两个靠谱的解决办法:

方法1:给路径套上双引号

既然命令行需要带空格的路径用引号包裹,那我们直接在传给os.system()的字符串里加上双引号就行:

import os
practice_path = r"C:\Users\Username\Desktop\Practice Folder\Practice.bat"
os.system(f'"{practice_path}"')

这里用f-string把路径整个包在双引号里,命令行就会把它当成一个完整的文件路径,不会被空格截断了。

方法2:用subprocess模块替代os.system(更推荐)

os.system()其实是比较老旧的方法了,Python官方更推荐用subprocess模块,它能更安全、灵活地处理外部命令,而且不需要手动加引号:

import subprocess
practice_path = r"C:\Users\Username\Desktop\Practice Folder\Practice.bat"
# 对于批处理文件,加上shell=True更稳妥
subprocess.run([practice_path], shell=True)

subprocess.run()接受参数列表时,会自动处理路径里的空格问题,不需要额外处理引号,还能方便地获取命令的执行结果、输出等信息,比os.system()好用多了。

另外补充一下:你之前用的原始字符串(r前缀)只是解决了Python解析路径时反斜杠的转义问题,但没法解决命令行层面的空格分隔问题,所以才会不管用~

内容的提问来源于stack exchange,提问作者J. D.

火山引擎 最新活动