【问题标题】:Dealing with an os.path.join path with a space in it using subprocess使用子进程处理带有空格的 os.path.join 路径
【发布时间】:2019-05-05 21:19:22
【问题描述】:

我目前正在使用 os.path.join 生成文件的路径,如下所示:-

myFile = 'csvfile.csv'
myPath = r'\\mydomain\12345\Original Format\'
myFullPath = os.path.join(myPath, myFile)

这个输出:-

\\mydomain\12345\Original Format\csvfile.csv

这个变量可以正常工作,但是我需要稍后从子进程调用中调用它,因为我希望运行 Windows CLI .exe 并将我的变量 myFullPath 作为参数传递给 Windows CLI。不幸的是,每当我运行 subprocess.call() 函数时,它都会失败,因为它无法处理目录路径中“原始格式”之间的空间。

有什么建议我可以如何处理这个问题,以便 Subprocess 调用可以处理路径中的空间?

我的子进程调用如下:-

command = r"C:/Program Files/myExe.exe -user %s -case %s -tags %s" % (username, path, tags)
subprocess.call(command)

谢谢

【问题讨论】:

  • @zondo 我已经用 subprocess.call 编辑了我的原始问题。我没有使用列表。
  • 你可以改成subprocess.call(["C:/Program Files/myExe.exe", "-user", username, "-case", path, "-tags", tags])
  • 完美 - 谢谢@zondo
  • 鉴于它以 `\\` 开头,我认为它是 Windows 的网络资源。对吗?
  • 是的@jalazbe 这是一个网络资源

标签: python python-3.x python-2.7 subprocess


【解决方案1】:

我建议你使用 os 如果您使用的是 Windows,则需要“转义”每个 \,您需要这样做

import os
remote_dir = os.path.join("\\\\","mydomain", "12345","Original Format")
fullpath = os.path.join(remote_dir, "csvfile.csv")

最好使用正确的操作系统加入。如果有空格或其他意外字符os.path.join()将确保返回正确的分隔符。

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 2015-08-14
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2021-08-16
    • 2021-03-31
    相关资源
    最近更新 更多