Я пытаюсь передать аргумент скрипту Python как одну литеральную строку, но Python просто не может его правильно проанализировать. Что бы я ни делал, аргумент искажается. Я пытался экранировать двойные кавычки, экранировать пробелы, экранировать и то, и другое, используя одинарные кавычки вокруг аргументов, содержащих двойные кавычки, но либо двойные кавычки теряются, либо аргумент разбивается на несколько элементов argv, ни один из которых мне не нужен.
script.py:
import sys
for i, arg in enumerate(sys.argv):
print(f"Arg {i}: {arg}")
Некоторые комбинации экранирования входных аргументов, которые я пробовал:
python script.py "C:\conf" "*.ini" -f '^S:"Log Filename"=.*' -r 'S:"Log Filename"=${LOGS}\%F\%S\%S-%Y%M%D-%h%m%s.txt'
python script.py "C:\conf" "*.ini" -f '^S:\"Log Filename\"=.*' -r 'S:\"Log Filename\"=${LOGS}\%F\%S\%S-%Y%M%D-%h%m%s.txt'
python script.py "C:\conf" "*.ini" -f "^S:\"Log Filename\"=.*" -r "S:\"Log Filename\"=${LOGS}\%F\%S\%S-%Y%M%D-%h%m%s.txt"
python script.py "C:\conf" "*.ini" -f "^S:\"Log\ Filename\"=.*" -r "S:\"Log\ Filename\"=${LOGS}\%F\%S\%S-%Y%M%D-%h%m%s.txt"
Обратите внимание: я также хочу, чтобы обратные косые черты \ воспринимались буквально, что означает:
\%F\%S\%S-%Y%M%D-%h%m%s.txt
не следует не менять на:
\\%F\\%S\\%S-%Y%M%D-%h%m%s.txt