[PYTHON] Enregistrer et récupérer des fichiers avec Pepper

Lors du stockage ou de la récupération d'informations dans Pepper, [ALMemory](http://qiita.com/Atelier-Akihabara/items/4162192129f366da1240#almemory%E3%82%92%E4%BB%8B% E3% 81% 97% E3% 81% 9F% E3% 82% A4% E3% 83% 99% E3% 83% B3% E3% 83% 88% E5% 80% A4% E3% 81% AE% E5% 8F% 96% E5% BE% 97) est la voie royale, mais lorsque vous pensez à enregistrer un texte légèrement plus grand avec une application et à l'extraire avec un PC de développement, le fichier est plus pratique. Il y a aussi.

En tant que processus dans un tel cas, j'ai créé une boîte pour écrire un fichier texte et essayé d'extraire le fichier de Pepper vers l'environnement local, j'ai donc pris une note.

Boîte d'exportation de fichier texte

La boîte se trouve dans le répertoire web-boxes de https://github.com/yacchin1205/pepper-web-boxes.

Clonez ou téléchargez le fichier ZIP, [Load Box Library](http://qiita.com/Atelier-Akihabara/items/db907ed319b8af0984db#%E3%83%9C%E3%83%83%E3%82% AF% E3% 82% B9% E3% 83% A9% E3% 82% A4% E3% 83% 96% E3% 83% A9% E3% 83% AA% E3% 81% AE% E8% AA% AD% Vous pouvez l'utiliser en chargeant la bibliothèque de boîtes selon la procédure de E3% 81% BF% E8% BE% BC% E3% 81% BF).

La boîte créée se trouve dans le dossier ʻIO` de la bibliothèque de boîtes et ressemble à ce qui suit. Y a-t-il quelque chose comme un outil de génération de documents boîte quelque part ...

IO> Zone d'écriture de texte

Écrivez le texte dans un fichier.

write-text-box.png

entrée onStart

Saisissez le texte que vous souhaitez exporter. Lorsque cette entrée se déclenche, elle écrit la chaîne entrée dans le fichier spécifié par le paramètre File path décrit ci-dessous.

sortie onStopped

Sortie lorsque l'exportation est réussie.

Sortie onFailure

Lorsque l'écriture échoue, une chaîne de caractères indiquant le contenu de l'erreur est générée.

Paramètre de chemin de fichier

Spécifiez le chemin du fichier texte à lire. Il est créé en fonction du répertoire actuel dans lequel le comportement s'exécute.

Paramètre d'encodage

Spécifie le codage des caractères du fichier texte à lire. La valeur par défaut est ʻutf8`. Veuillez consulter http://docs.python.jp/2.7/library/codecs.html pour connaître le type de valeur pouvant être spécifié.

Je suis accro à: la gestion de l'Unicode dans les boîtes Python

Ce n'est pas cette zone d'écriture de texte, mais je suis tombé amoureux du piège Unicode avec le code suivant dans la zone de lecture de texte que j'ai créée avec.

with codecs.open(self.getParameter("File path"), "r", self.getParameter("Encoding")) as f:
    text = f.read()
self.onStopped(text.encode("utf8"))

J'ai spécifié chaîne de caractères comme type de onStopped, mais si je donne la chaîne de caractères de type unicode obtenue par read () telle qu'elle est comme argument, None est passé à l'entrée suivante. Cela semble finir. J'ai écrit du code de test, mais quand je dis String dans la documentation de Choregraphe, il semble que seul le type str de Python soit pris en compte et que le type unicode ne puisse pas être traité. Pour le moment, je l'ai évité en le donnant sous forme de tableau d'octets avec ʻencode ("utf8") `, mais ce comportement de Chorégraphe ne correspond pas à l'idée des chaînes Python, et il est très cool en ce qu'il peut prêter à confusion. J'ai l'impression que non.

Pour les Japonais, il vaut mieux clarifier cela, j'ai donc demandé dans la communauté Aldebaran ([String in Choregraphe's python box](https://community.aldebaran.com/en/forum/string] -choregraphes-python-box-2651)) Cependant, la réponse que le type unicode n'est pas pris en charge maintenant ... Hmm.

tester

Pour le moment, un test simple est écrit dans le référentiel tests / test-io-text /. Par exemple, testez si le contenu obtenu dans la zone Lire le texte est le contenu attendu, comme indiqué ci-dessous. Par exemple, le test de lecture de texte ressemble à ceci.

read-text-test.png

Pour cette idée, reportez-vous à Pepper Box Library Test Consideration pour référence.

Extraction de fichiers dans l'environnement local

Certains expliquent comment récupérer les fichiers enregistrés dans ces boîtes.

Utiliser Choregraphe

Pour le système de fichiers de Pepper, Choregraphe vous permet de télécharger et de télécharger des fichiers. [Transférer les fichiers vers le menu avancé](http://qiita.com/tonosamart/items/fe3948a45ccc97ddbbab#choregraphe%E3%81%A7%E3%81%A4%E3%81%AA%E3%81%84% E3% 81% A7% E3% 81% BF% E3% 82% 8B% EF% BC% 92), c'est donc la voie royale pour l'utiliser.

Télécharger des fichiers depuis Pepper en utilisant HTTP

Quand je pense à l'automatisation, j'ai parfois envie de récupérer des fichiers même dans un environnement sans Chorégraphe. En regardant la documentation Guide du développeur NAOqi> Programmation> Connexion Chorégraphe / votre robot> Gestion des connexions, il semble que vous pouvez supposer que FTP fonctionne, mais j'ai osé essayer d'utiliser HTTP.

[Si vous créez un répertoire appelé html dans le projet, vous pouvez le voir sur la tablette](http://qiita.com/Atelier-Akihabara/items/716e88b306db12751c9b#%E7%B0%A1%E5%8D%98%E3%81%AAhtml% E3% 82% 92% E3% 82% BF% E3% 83% 96% E3% 83% AC% E3% 83% 83% E3% 83% 88% E3% 81% AB% E8% A1% A8% E7% A4% BA), mais dans cet état, vous pouvez voir le contenu de ce répertoire html en faisant http: // (nom de Pepper.local. Ou adresse IP) / apps / .lastUploadedChoregrapheBehavior /. C'est peut-être la même idée que de mettre le répertoire public_html dans votre répertoire personnel sur un serveur Web.

Alors pourquoi ne pas générer les fichiers que vous souhaitez rendre disponibles pour téléchargement dans le répertoire html? J'ai créé le projet samples / dump-info dans le référentiel. Ici, tout le contenu d'ALMemory et tout le contenu des préférences sont vidés, enregistrés dans un fichier texte et téléchargés à partir d'un PC externe.

dump-info-flow.png

Les points sont les deux points suivants.

  1. Le paramètre de chemin d'accès au fichier donné à la zone d'écriture de texte est défini par la valeur de sortie de la zone d'origine Get HTML File (également placée dans web-boxes). La zone Obtenir le fichier HTML génère le chemin du fichier de sortie en fonction du chemin absolu du répertoire html dans son application.
  2. Dans html / index.html, un lien vers le fichier spécifié est fourni dans la zone Obtenir le fichier HTML.

Après avoir exécuté cette application, ouvrez une URL telle que http: // IP de Pepper / apps / .lastUploadedChoregrapheBehavior / sur un PC connecté au même LAN que Pepper. Ensuite, vous pouvez vérifier l'index.html du projet depuis votre PC. Ici, vous pouvez télécharger le fichier (1.) exporté dans la zone Écrire du texte en cliquant sur le lien vers le fichier (2.).

Comme ça, si vous voulez créer un fichier dans le projet et le retirer du PC, vous devez créer le fichier dans le répertoire html du projet. Utilisons ceci pendant un moment ...

Recommended Posts

Enregistrer et récupérer des fichiers avec Pepper
Modifier et enregistrer des fichiers en lecture seule avec vim
Lire et écrire des fichiers csv avec numpy
Lire et écrire des fichiers JSON avec Python
Détection de visage à partir de plusieurs fichiers image avec openCV, découpez et enregistrez
Faites glisser et déposez un fichier local avec Selenium (Python)
Décrivez ec2 avec boto3 et récupérez la valeur
La lecture et l'écriture s'adaptent aux fichiers avec Python (mémo)
Renommer ou déplacer des fichiers (répertoire) avec la commande mv
Télécharger des fichiers avec Django
Économisez de la mémoire avec `` __slots__``
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2 2
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2
Enregistrez automatiquement les fichiers .py et .html dans le bloc-notes Jupyter.
Lire et écrire des fichiers avec Slackbot ~ Développement de bot avec Python ~
Nuage de points avec du poivre
Linux: fichiers et répertoires
Enregistrer des listes, des dictionnaires et des taples dans des fichiers externes python
Avec et sans WSGI
kobitonote.py --Synchroniser les éléments de sauvegarde modifiés avec Kobito vers Evernote
Visualisez l'écoulement de la cavité avec matplotlib et enregistrez-le en tant qu'animation gif
Exemple d'analyse HTTP GET et JSON avec Pepper Python
Importez et supprimez des fichiers dans Google Cloud Storages avec django-storage
Avec moi, cp et sous-processus
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Linux (À propos des fichiers et des répertoires)
Python et matériel - Utilisation de RS232C avec Python -
À propos des fichiers et des processus LINUX
Enregistrez des images avec le web scraping
Lire et écrire des fichiers csv
Tri des fichiers image avec Python (2)
Trier de gros fichiers avec python
Tri des fichiers image avec Python (3)
Déboguer avec l'interpréteur PEPPER python
Tri des fichiers image avec Python
Utilisez Django pour enregistrer les données de tweet
Transférer des fichiers avec Teraterm [Note]
Intégrez des fichiers PDF avec Python
Lire des fichiers .txt avec Python
Super résolution avec SRGAN et ESRGAN
Group_by avec sqlalchemy et sum
python avec pyenv et venv
Travailler avec des fichiers JSON dans Matlab
Avec moi, NER et Flair
Fonctionne avec Python et R
Faites fonctionner Jupyter avec l'API REST pour extraire et enregistrer le code Python
Créons une IA à trois voies avec Pylearn2 --Save and load model -
[AWS] Recherchez et acquérez les données nécessaires à partir des fichiers S3 avec S3 Select
Comment importer des fichiers CSV et TSV dans SQLite avec Python
Analyse de correspondance des phrases avec l'API COTOHA et sauvegarde dans un fichier
Prenez une image avec Pepper et affichez-la sur votre tablette
[Python3] Enregistrez la matrice de moyenne et de covariance dans json avec les pandas
Obtenez les conditions de simulation OCTA à partir d'un fichier et enregistrez avec les pandas
Utilisez Firefox avec Selenium depuis python et enregistrez la capture d'écran