У меня есть скрипт на 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
в редакторе реестра.Я не уверен, может ли это быть причиной такого поведения.