python - 逗号从 Windows 中的 Python 3 sys.argv 中消失

标签 python python-3.x windows

我在 Python 3.7 中有一个脚本,它根据 sys.argv 中传递给它的参数运行。这些参数是视频标题,因此几乎总是包含空格:因此我使用逗号作为分隔符并使用 split(',') 将它们分开。

这在 bash 中工作正常,但是当我将脚本发送给同事时,它无法拆分他放置逗号的字符串。我写了另一个简单的脚本用于测试目的:

import sys

print('Number of arguments: '+str(len(sys.argv)))

for arg in sys.argv:
  print(arg)

console_input = ' '.join(sys.argv[1:]).strip()
print('Combined: '+console_input)
print('Divided: ')
for divided_arg in console_input.split(','):
  print('- '+divided_arg.strip())

在我的电脑上,当我输入 python3 test.py Foo Bar, Baz 时,会返回以下内容:

Number of arguments: 4
/Users/michael/test.py
Foo
Bar,
Baz
Combined: Foo Bar, Baz
Divided:
- Foo Bar
- Baz

在 HIS (Windows 10) 计算机上,它返回这个:

Number of arguments: 4
C:\Users\john\Downloads\test.py
Foo
Bar
Baz
Combined: Foo Bar Baz
Divided:
- Foo Bar Baz

所以在我看来,Windows 在将参数传递给 Python 之前会从参数中去除逗号,除非我处理 sys.argv 的方式存在我没有看到的问题.有谁知道如何解决这个问题?

我应该注意到,当他安装 Python 时,他必须在注册表编辑器中手动将可执行文件添加到 $PATH 变量中。我不确定这是否是导致此行为的原因。

最佳答案

我假设您在 Windows 上使用 CMD。如果是这样,参数分隔符是空格,但也有一些其他分隔符,如逗号 (,) 或分号 (;)。你可以找到一些细节 here .这意味着它们永远不会成为参数的一部分,因此您将无法执行 console_input.split(',')

对于你的情况,我建议按照尼克所说的去做并引用论点。但是,如果不熟悉命令行的人会使用它,您是否考虑过使用包含视频标题的 csv 文件作为参数?

关于python - 逗号从 Windows 中的 Python 3 sys.argv 中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52839503/

相关文章:

python - 如何在 Python 中手动对数字列表进行排序?

windows - 如何从 Bash for Windows 10 运行 .bat 或 .cmd 文件

python - 如何使用 `__slots__` 进行属性初始化?

python - 函数返回输出 'None'

python - 如何为 python 中的列中的每个唯一值创建一个虚拟对象

windows - 重复的 Windows 防火墙规则(Netsh AdvFirewall 防火墙)

windows - git clone 在 git shell 中工作,但在 windows 命令行中不工作

python - 如何在 urwid 中创建嵌套列表框?

python - 如何将系列添加到 DataFrame 中有自定义索引

python - 如何使用 python (suds) 对 XML 进行签名