pyserial- envoyer des paramètres à l'entrée runtime- contre raw_input - faille de sécurité?

StackOverflow https://stackoverflow.com/questions/2231249

Question

Je suis en train d'écrire un programme qui ouvre et enregistre les données envoyées via un port série dans un fichier texte. Je suis actuellement l'ajout de fonctionnalités pour permettre la reconfiguration du port série au cours de l'exécution. Je demande à l'utilisateur de choisir la variable à changer un à la fois, afin de le garder simple pour moi (je vous serais reconnaissant des solutions élégantes ainsi).

La fonction pyserial qui crée l'instance série (serial.Serial ()) a les paramètres suivants:

import serial
ser = serial.Serial(port=0, baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0, writeTimeout=None, dsrdtr=None, interCharTimeout=None) #default values shown

Je remarque que, bien que la plupart sont des arguments int (), certains ne sont pas, à savoir « délai d'attente ».

Je sais que l'aide int(raw_input("for the int() type variables)) me permettent d'attribuer en toute sécurité les variables int, mais les variables avec aucun par défaut nécessiterait une fonction input() pour affecter correctement la possible valeur Aucun.

J'ai lu ailleurs que l'entrée () est généralement pas recommandée, car elle a le potentiel d'être exploité (quelque chose eval ()?). Comment alors devrais-je gérer ces entrées? à-dire en utilisant serial.Serial () où writeTimout = str (Aucun) renvoie une erreur.

Merci!

Était-ce utile?

La solution

La meilleure façon est juste d'accepter l'entrée de l'utilisateur comme une chaîne, puis l'analyser. C'est à dire. laisser l'utilisateur d'entrer paires clé = valeur:

baudrate = 9600
parity = N

analyser ensuite ces paires, par fractionnement sur « = » et le décapage des deux côtés. Affectez les variables avec une table de consultation de chaîne (les cartes de chaîne de baudrate au baudrate var, et ainsi de suite). De cette façon, vous pouvez gérer la valeur None comme vous le souhaitez.

Cette méthode est simple et sûr. input soulèvera des exceptions si l'entrée utilisateur n'est pas Python valide, et vous ne voulez pas que.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top