8
votes

Python Paramiko - Commande d'exécution

Je vais essayer d'exécuter ce script: xxx

La question est la suivante: Comment puis-je mettre les variables y , m , d dans la commande variable ?


0 commentaires

4 Réponses :


19
votes

Python a de nombreuses façons d'effectuer une mise en forme de chaîne. L'un des plus simples est de concaténer simplement les parties de votre chaîne ensemble: xxx


7 commentaires

Je ne vois pas que c'est nettement meilleur. Maintenant, si vous aviez dit '/'.join([Y, M, D]), vous auriez une affaire.


Le problème ici n'est pas syntaxe, le problème est que si vous exécutez A1 + A2 + A3 + ... + un , vous créez et détruisez n-1 temporaire cordes. rejoindre dans Python crée une seule chaîne. C'est une mauvaise habitude d'entrer dans.


Je signalerais 1. N est très petit ici, 2. L'opérateur + est très lisible ici, et 3. GrandDebater.com/blog/gabe/post/7


Je comprends maintenant. Merci les gars!


@matt: Je pense que nous allons devoir accepter de ne pas être d'accord ici. C'est une convention et l'habitude d'avoir l'habitude de le faire correctement est la meilleure, imo.


L'utilisation du signe plus pour la concaténation de la chaîne est la méthode la plus non pythonique de le faire. Python a comme 4 façons de formater des piqûres. Pourcentage de codage, de cordes F, de .Format et de modèles sont tous préférés sur le signe plus. Évitez également l'entrée de terminal. Pipes.Quelle est là pour une raison.


Cette réponse est généralement correcte. Mais le code n'est pas fiable. Cela peut une impasse dans certains scénarios. Pour plus de détails, voir Attendre la commande Terminer exécutée avec Python Paramiko .



3
votes
command = 'ls /home/user/images/cappi/03000/%s/%s/%s' %(y,m,d)

0 commentaires

3
votes

Utilisation du Nouveaux spécifications de format , vous pouvez accéder aux arguments par nom. :

'ls /home/user/images/cappi/03000/{year}/{month}/{day}'.format(year=y, month=m, day=d)


3 commentaires

Vous devez mettre un F devant la chaîne.


@kagronick Depuis Python 3.6, vous pouvez utiliser F-Strings (PEP 498) < / a>, mais ce qui précède .format (...) la chaîne est parfaitement valide Depuis Python 2.6 et dans Python 3.x .


Oh je n'ai pas fait défiler à droite sur mon téléphone. .format était neuf en 2006, donc j'ai supposé que les chaînes F étaient de quoi vous parliez.



2
votes

Je préfère

command = f"ls /home/user/images/cappi/03000/{y}/{m}/{d}"


0 commentaires