我在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
变量中。我不确定这是否可能是这种行为的原因。
答案 0 :(得分:1)
我假设您在Windows上使用CMD。如果是这样,则参数定界符是空格,但也可以是其他一些定界符,例如Comma(,)或Semicolon(;)。您可以找到一些详细信息here。这意味着它们将永远不会成为参数的一部分,因此您将无法执行console_input.split(',')
对于您的情况,我建议按照尼克所说的那样做,并引述论点。但是,如果不熟悉命令行的人会使用它,您是否考虑过将包含视频标题的csv文件用作参数?