<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno mer 8 apr 2020 alle ore 08:16 Matteo Perini <<a href="mailto:perini.matteo@gmail.com">perini.matteo@gmail.com</a>> ha scritto:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Ciao a tutti,<br>
<br>
ho un problemino con il comportamento di argparse.<br>
<br>
Sto facendo delle prove con questo script di test:<br>
<br>
if __name__ == "__main__":<br>
parser = argparse.ArgumentParser()<br>
parser.add_argument("-t", "--text", default = 'ci\nao', type=str)<br>
args = parser.parse_args()<br>
text = args.text<br>
for line in text.split('\n'):<br>
print(line)<br>
<br>
Se eseguo lo script senza argomenti il risultato è quello atteso:<br>
<br>
ci<br>
<br>
ao<br>
<br>
Il "\n" viene interpretato correttamente.<br>
<br>
Se però eseguo lo script mettendo come argomento -t "ci\nao" il <br>
risultato è:<br>
<br>
ci\nao </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
problema che riesco a risolvere convertendo text così:<br>
<br>
text = bytes(args.text, "utf-8").decode("unicode_escape")<br>
<br>
a questo punto ottengo di nuovo l'andata a capo.<br>
<br>
<br>
Ultimo caso, se l'utente non mette le virgolette e scrive -t ci\nao il <br>
risultato di args.text è:<br>
<br>
cinao<br>
<br>
mi toglie solo la "\" e a questo punto io non so più come trattarlo.<br>
<br>
Che voi sappiate c'è un modo per controllare se un argomento ha le <br>
virgolette o no.<br>
<br>
Oppure trattare l'input sempre come raw?<br>
<br>
Penso sia un problema che potrebbe essere piuttosto comune ma non ho <br>
trovato soluzioni online.<br>
<br>
Ciao<br></blockquote><div><br></div><div>se vuoi i parametri raw</div><div><br></div><div>import sys</div><div>print(sys.argv)</div><div><br></div><div>ciao,</div><div>Marco</div></div></div>