【问题标题】:Handling directories with spaces Python subprocess.call()处理带有空格的目录 Python subprocess.call()
【发布时间】:2026-02-13 12:15:01
【问题描述】:

我正在尝试创建一个扫描文本文件并将参数传递给子进程的程序。一切正常,直到我得到路径中有空格的目录。

我的 split 方法,它打破了参数在空格上绊倒:

s = "svn move folder/hello\ world anotherfolder/hello\ world"

task = s.split(" ")
process = subprocess.check_call(task, shell = False)

做,要么我需要函数来解析正确的参数,要么我将整个字符串传递给子进程而不先分解它。

我有点迷茫。

【问题讨论】:

  • 你能依赖固定数量的空格分隔的左标记吗?
  • 引用文件名怎么样?
  • 如果您创建正在读取的文件名,为什么不使用逗号分隔值?然后拆分“,”而不是所有的麻烦?

标签: python subprocess directory


【解决方案1】:

改用列表:

task = ["svn",  "move",  "folder/hello world", "anotherfolder/hello world"]
subprocess.check_call(task)

如果您的文件包含整个命令,而不仅仅是路径,那么您可以尝试shlex.split():

task = shlex.split(s)
subprocess.check_call(task)

【讨论】:

  • 谢谢谢谢!使用列表可以解决各种奇怪的引用/转义问题 +1