我在 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/