Suite

Obtenir des instructions d'impression dans un script Python pour imprimer via un fichier de commandes


Je commence à apprendre Python et les fichiers batch. J'ai un script Python qui sélectionne les données par emplacement et exporte la sélection vers une nouvelle classe d'entités. Le script fonctionne très bien - inclus dans ce script, j'ai les lignes suivantes :

matchCount = int(arcpy.GetCount_management(featureLayer).getOutput(0)) print str(matchCount) + " lignes exportées"

Lorsque j'exécute ce script dans PythonWin, l'instruction print ci-dessus est produite dans la fenêtre interactive. Lorsque j'exécute ce script via un fichier batch, l'instruction d'impression n'est pas produite. À la fin de mon fichier batch, j'ai écrit PAUSE pour que l'écran ne disparaisse pas après l'exécution de mon script. Quelqu'un a-t-il des idées sur la façon de produire ma déclaration d'impression en ligne de commande ?


Pouvez-vous nous montrer le contenu de votre fichier batch s'il vous plaît ?

(BTW, la pratique recommandée est d'utiliserarcpy.AddMessage()plutôt que d'imprimer, pour la portabilité entre la ligne de commande/les fichiers batch et ArcMap. Mais l'impression est très bien si vous ne voulez pas que votre message s'affiche dans ArcMap.)


Un moyen plus simple pour vous de le faire est de configurer Eclipse pour qu'il fonctionne avec PyDev et vous pouvez y exécuter votre code et le déboguer. En fait, vous le décryptez là, en mettant des arrêts et des montres dans le code, pour interroger les objets.

C'est mon conseil.


Exemples d'instructions d'impression Python

Beaucoup de gens commencent leur programmation avec un simple « Hello World ! programme C'est devenu le premier programme traditionnel que les gens apprennent. Le programme "Hello, world" affiche simplement "Hello World!". C'est assez simple pour que les personnes qui n'ont aucune expérience en programmation informatique puissent facilement commencer à programmer dans un nouveau langage.

Le programme Hello World" en Python est très simple, il s'agit d'une instruction d'une ligne comme indiqué ci-dessous,

Remarque : les exemples de ce document sont créés à l'aide de python 2.7. En Python 3+, vous devez utiliser l'instruction print au lieu de la commande print.


Exécutez-le !

Comme dit ci-dessus, l'utilisation de Python 3 n'a pas réussi à l'exécuter. La modification des instructions d'impression en fonctions a résolu ce problème. Python 2 prend également en charge la fonction print(), il ne devrait donc pas y avoir de problème à s'exécuter sur Python 2.

Le programme s'est exécuté comme prévu avec un fichier correct et a produit un fichier de sortie avec les valeurs converties.

L'exécuter avec un fichier invalide, ou sans aucun argument, fait planter le programme avec respectivement une FileNotFoundError ou une ValueError. Si un fichier qui existe mais contient une valeur hexadécimale invalide (par exemple une chaîne aléatoire), le programme plante également :

Les erreurs ci-dessus nous indiquent que nous avons besoin d'une vérification des erreurs.

La première erreur à résoudre serait la ValueError de ne pas donner de nom de fichier comme argument lors de l'exécution du programme. Cela peut être résolu en utilisant un module CLI tel que argparse , click , ou peut-être un autre que vous aimez. Personnellement, j'utilise argparse, car il est assez simple et fait partie de la bibliothèque standard.

À ce stade, vous pouvez accéder aux arguments de la ligne de commande args en tant que dictionnaire.

Le if __name__ == '__main__' : une partie du code n'est applicable que s'il est exécuté en tant que script. Cela signifie que si le fichier est importé en tant que module, cela ne fonctionnera pas. Voir aussi cette réponse pour plus d'informations.

Lorsque nous exécutons le code ci-dessus sans pour autant tous les arguments, nous obtenons ce qui suit :

La prochaine étape est la FileNotFoundError . Celui-ci est assez simple à résoudre : avant d'ouvrir le fichier, vérifiez s'il existe à l'aide du module os déjà importé :

La dernière ValueError peut être résolue de plusieurs manières. L'une serait d'utiliser regex sur la ligne actuelle du fichier pour trouver des valeurs hexadécimales. En supposant que seules les valeurs hexadécimales doivent être sur une ligne, cela devient beaucoup plus simple. Nous pourrions simplement vérifier si la ligne commence par 0x (par exemple une valeur hexadécimale).

La lecture du fichier doit également être effectuée ligne par ligne en tant qu'itérateur, pour éviter que des fichiers volumineux ne plantent votre programme par une consommation trop élevée de mémoire. À l'heure actuelle, le programme lit tout le texte du fichier en mémoire. Cela peut être fait comme décrit dans la question suivante :

Placer cela dans une fonction à part vous empêche également d'ouvrir le fichier en continu.


Il n'y a pas de commande spécifique (ou du moins pas à ma connaissance) pour obtenir ces informations, mais vous pouvez les trouver entre celles fournies par systeminfo.exe .

Get-UICulture ou Get-Host dans PowerShell

Si vous avez besoin des paramètres régionaux réels pour faire d'autres choses dans un fichier batch, vous pouvez créer un fichier batch (enregistrer un fichier texte sous l'extension .bat) avec ce qui suit. Comme point de départ, cela s'imprimera dans l'invite de commande, par exemple, "en-us" (sans guillemets). Vous pouvez également utiliser la variable !VERBOSE_SYSTEM_LOCALE ! pour les paramètres régionaux lisibles par l'homme, par ex. États Unis Anglais)

En fait, vos propositions échouent, car elles reposent sur la recherche d'une chaîne ("Paramètres régionaux du système") qui change en fonction de la locale actuelle ! Sur mon Win10Pro français, la chaîne est "Option régionale du système" (avec lettre accentuée, ce qui est très difficile à gérer correctement dans un fichier CMD).

J'ai fait quelques tests, et il semble, sur MON système, que les lignes sur les paramètres régionaux dans la sortie systeminfo soient les seules à contenir un point-virgule ("") :


Pourquoi la programmation Python pour le piratage

Python est un langage de programmation généraliste de haut niveau largement utilisé. Python est un langage très simple mais puissant, il est open source et orienté objet et il possède d'excellentes bibliothèques qui peuvent être utilisées à la fois pour le piratage et pour l'écriture de programmes normaux très utiles autres que des programmes de piratage. Dans l'ère future et présente, python est très populaire et il est facile à apprendre, apprendre à pirater avec python sera amusant et vous apprendrez la programmation python de la meilleure façon. Il existe une forte demande de développeurs python sur le marché.

Noter: Pour en savoir plus sur Python, cliquez ici.


Résumé

Le but de ce document est de fournir une référence rapide pour la connexion et l'échange d'informations entre deux systèmes. Ce document décrit un processus typique pour une session FTP (File Transfer Protocol) interactive ou automatisée exécutée sur un PC avec Windows/2000 et se connectant à un système UNIX. Ce processus peut varier légèrement en fonction des configurations matérielles et logicielles des systèmes locaux et distants.

Ce document peut être utilisé comme tutoriel pour les nouveaux programmeurs ou comme référence rapide pour les programmeurs expérimentés.

Dans le monde de la programmation, il existe de nombreuses façons de résoudre un problème. Cette documentation et ce logiciel ont été développés et testés sur des systèmes configurés pour un environnement SIMOTIME en fonction du matériel, des systèmes d'exploitation, des exigences des utilisateurs et des exigences de sécurité. Par conséquent, des ajustements peuvent être nécessaires pour exécuter les tâches et les programmes lorsqu'ils sont transférés vers un système d'une architecture ou d'une configuration différente.

SIMOTIME Services a de l'expérience dans le déplacement ou le partage de données ou de traitement d'applications sur une variété de systèmes. Pour plus d'informations sur les services ou les technologies SIMOTIME, veuillez nous contacter en utilisant les informations de la section Commentaires ou commentaires de ce document.

Contrat de logiciel et clause de non-responsabilité

L'autorisation d'utiliser, de copier, de modifier et de distribuer ce logiciel, cette documentation ou ce matériel de formation à quelque fin que ce soit nécessite le paiement de frais à SimoTime Technologies. Une fois les frais reçus par SimoTime, la dernière version du logiciel, de la documentation ou du matériel de formation sera livrée et une licence sera accordée pour une utilisation au sein d'une entreprise, à condition que l'avis de droit d'auteur de SimoTime apparaisse sur toutes les copies du logiciel. Le nom ou le logo SimoTime ne peut être utilisé dans aucune publicité ou publicité relative à l'utilisation du logiciel sans l'autorisation écrite de SimoTime Technologies.

SimoTime Technologies ne fait aucune garantie ou représentation quant à l'adéquation du logiciel, de la documentation ou du matériel d'apprentissage à quelque fin que ce soit. Il est fourni « EN L'ÉTAT » sans aucune garantie expresse ou implicite, y compris les garanties implicites de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. SimoTime Technologies ne sera pas responsable des dommages directs, indirects, spéciaux ou consécutifs résultant de la perte d'utilisation, de données ou de projets, que ce soit dans le cadre d'une action contractuelle ou délictuelle, résultant de ou en relation avec l'utilisation ou la performance de ce logiciel. , de la documentation ou du matériel de formation.

Téléchargements et liens

Cette section comprend des liens vers des documents contenant des informations supplémentaires qui dépassent la portée et l'objectif de ce document. Le premier groupe de documents peut être disponible à partir d'un système local ou via une connexion Internet, le deuxième groupe de documents nécessitera une connexion Internet.

Remarque : une licence SimoTime est requise pour que les éléments soient disponibles sur un système ou un serveur local.

Serveur actuel ou accès Internet

Les liens suivants peuvent être vers le serveur actuel ou vers Internet.

Remarque : les dernières versions des documents SimoTime et des suites de programmes sont disponibles sur Internet et sont accessibles à l'aide de l'icône . Si un utilisateur possède une licence SimoTime Enterprise, les documents et les suites de programmes peuvent être disponibles sur un serveur local et accessibles à l'aide de l'icône.

Explorez des exemples de scripts FTP et de fichiers de commande Windows (FTP) qui transféreront des fichiers entre un système hôte mainframe et un système client Windows.

Explorez les alternatives pour transférer des fichiers de données entre les systèmes. Ce lien permet d'accéder à un référentiel d'informations qui inclut le transfert et/ou le partage de données entre les systèmes Mainframe (ZOS ou VSE), Linux, UNIX et Windows.

Explorez les tables de traduction ASCII et EBCDIC . Ces tableaux sont fournis aux personnes qui ont besoin de mieux comprendre les structures binaires et les différences des formats de codage.

Explorez les codes de retour d'état des fichiers pour interpréter les résultats de l'accès aux ensembles de données VSAM et/ou aux fichiers QSAM.

Accès Internet requis

Les liens suivants nécessitent une connexion Internet.

Un bon point de départ est la page d'accueil SimoTime pour accéder aux livres blancs, aux exemples de programmes et aux informations sur les produits. Ce lien nécessite une connexion Internet

Explorez le site Web de Micro Focus pour plus d'informations sur les produits et services disponibles auprès de Micro Focus. Ce lien nécessite une connexion Internet.

Explorez les technologies GnuCOBOL disponibles sur SourceForge. SourceForge est une ressource communautaire Open Source dédiée à aider les projets open source à être aussi réussis que possible. GnuCOBOL (anciennement OpenCOBOL) est un compilateur COBOL avec prise en charge de l'exécution. Le compilateur (cobc) traduit la source COBOL en exécutable à l'aide du C intermédiaire, désigné compilateur et éditeur de liens C. Ce lien nécessitera une connexion Internet.

Glossaire des termes

Consultez le glossaire SimoTime pour une liste des termes et définitions utilisés dans les documents fournis par SimoTime.

Commentaires ou rétroaction

Ce document a été créé et est maintenu par SimoTime Technologies. Si vous avez des questions, des suggestions, des commentaires ou des commentaires, veuillez utiliser les coordonnées suivantes.

Merci de votre écoute.

Présentation de l'entreprise

SimoTime Technologies a été fondée en 1987 et est une société privée. Nous sommes spécialisés dans la création et le déploiement d'applications commerciales utilisant des technologies et des services nouveaux ou existants. Nous avons une équipe de personnes qui comprennent le large éventail de technologies utilisées dans les environnements d'aujourd'hui. Nos clients vont des petites entreprises utilisant les technologies Internet aux sociétés utilisant de très grands systèmes mainframe.

Très souvent, pour atteindre des marchés plus vastes ou fournir un niveau de service supérieur aux clients existants, il faut que les technologies Internet les plus récentes fonctionnent de manière complémentaire avec les systèmes mainframe d'entreprise existants. Nous nous spécialisons dans la préparation des applications et des données associées qui résident actuellement sur une seule plate-forme pour être distribuées sur une variété de plates-formes.

La préparation des programmes applicatifs nécessitera le transfert des membres sources qui seront compilés et déployés sur la plateforme cible. Les données devront être transférées entre les systèmes et devront peut-être être converties et validées à différentes étapes du processus. SimoTime dispose de la technologie, des services et de l'expérience pour vous assister dans les tâches de gestion des applications et des données impliquées dans la conduite des affaires dans un environnement multi-système.


Vous avez besoin d'un petit espace. Entre les méthodes de la classe Player, par exemple, j'ajouterais une ligne vide. Entre la classe Player et la classe Dragon, j'ajouterais deux lignes vides. PEP 8, le guide de style officiel pour Python, est d'accord : https://www.python.org/dev/peps/pep-0008/#blank-lines.

À quelques endroits, vous utilisez l'option if == . ou option == . ou alors . . C'est plus long qu'il n'en faut. Vous devriez en profiter (Voir aussi https://stackoverflow.com/q/15112125/5827958). Par exemple:


Voici une solution qui n'implique pas OpenOffice :

sudo apt-get install enscript

enscript mon_fichier_texte.txt -o - | ps2pdf - sortie.pdf

Il y a plus d'options pour inscrire, par ex. -B pour omettre l'en-tête de page. Voir man enscript pour toutes les options.

sans installer aucun des logiciels mentionnés ci-dessus, on peut simplement faire ce qui suit avec cupsfilter déjà installé :

(pour les options, veuillez vous référer aux pages de manuel de cupsfilter :-) )

LA FAÇON SIMPLE D'ENSCRIPTION

sudo apt-get install cups-pdf enscript

Exécutez ensuite enscript sur votre fichier avec le commutateur -P et la description de l'imprimante PDF dans ce cas.

Une imprimante avec une description PDF a été créée lorsque vous avez installé cups-pdf, lorsque vous utilisez enscript avec cette imprimante, votre document sera envoyé à l'imprimante PDF et sera imprimé dans un fichier, créé au format .pdf dans votre répertoire /home/PDF, le La commande ci-dessus imprimera le fichier texte test.txt au format pdf dans le répertoire PDF.

UTILISER UNOCONV

Vous pouvez utiliser unoconv en mode autonome, cela signifie qu'en l'absence d'un écouteur OpenOffice, il démarrera le sien :


Fins de fichier

Les fins de fichier donnent à l'utilisateur et au système un indicateur sur le contenu d'un fichier. Les fins de fichiers raisonnables pour les fichiers de configuration sont

  • *config.py pour les fichiers Python
  • *.yaml ou *.yml si la configuration est faite au format YAML
  • *.json pour les fichiers de configuration écrits au format JSON
  • *.cfg ou *.conf pour indiquer qu'il s'agit d'un fichier de configuration
  • *.ini pour "initialisation" sont assez répandus (voir Wiki)

Cela dit, je pense que je préfère *.conf . Je pense que c'est un choix que les utilisateurs comprennent.

Mais vous pouvez également considérer que *.ini peut être ouvert par défaut dans un éditeur de texte. Pour les autres options, les utilisateurs peuvent se voir demander quel programme ils souhaitent utiliser.