【问题标题】:sys.argv arguments with spaces带空格的 sys.argv 参数
【发布时间】:2022-01-11 03:59:41
【问题描述】:

我正在尝试将文件夹名称作为 sys.argv 参数输入,但在文件夹名称中有空格时遇到问题,这些空格会变成多个变量。

例如,从下面的命令行中,“文件夹名称”变为两个变量。

Program.py D:\Users\Erick\Desktop\Folder Name 

有什么解决办法吗?

【问题讨论】:

  • 使用引用;您的 console 在这里进行拆分,而不是 Python。
  • Program.py "D:\Users\Erick\Desktop\文件夹名称"
  • 谢谢,蒂姆夫!出于某种原因,我尝试了单引号和多行引号,但没有尝试双引号!

标签: python


【解决方案1】:

空格是命令行参数的分隔符。如果可能,最好不要在目录和文件名中使用空格。要输入其中有空格的参数,您必须将其括在引号"folder with space" 中。

Program.py "D:\Users\Erick\Desktop\Folder Name"

【讨论】:

  • 我使用引号“”来分隔两个输入参数(在 Windows 中),其中第一个参数是目录路径。然而,这个目录路径的末尾包含一个“\”,当它与 python 参数的结束引号相结合时,python 会转义引号并将其作为参数的一部分包含在内。因此,它将它视为一个参数而不是两个。关于如何取消引用的任何想法?
  • 通过在参数末尾添加一个额外的“\”来解决此问题,以便转义\,从而将右引号作为分隔符而不是作为参数本身的一部分。
【解决方案2】:

假设输入总是单个文件/文件夹路径:

path = " ".join(sys.argv[1:])

【讨论】:

    【解决方案3】:

    为了扩展 Arshiyan 对涉及多条路径的情况的回答的简单性,您可以使用分隔符(例如哈希)连接路径,然后在到达 python 时拆分结果字符串...

    paths = " ".join(sys.argv[1:]).split("#")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      相关资源
      最近更新 更多