Le traitement de l'échantillon à exécuter est le programme que j'ai noté jusqu'à présent. (1) Graphique des données Excel avec matplotlib (1) (2) [Convertir le graphe matplotlib au format de fichier emf] (http://qiita.com/gitytm15/items/418ddcd8f58555d7433b) (3) J'ai essayé de changer Inkscape of Raspeye de 0,48 à 0,92
C'est une tarte à la râpe, alors j'aime que ça ne me dérange pas tellement même si je la commence tout le temps.
Tout d'abord, créez un dossier partagé auquel vous pouvez accéder de n'importe où pour que le programme s'exécute lorsque vous placez les fichiers xlsx et xls dans le dossier [DATA] partagé.
[partager] ← dossier partagé │ └ [DATA] Mettez xlsx, xls ici pour que le programme de conversion soit exécuté │ ├ [eps] Enregistrer le fichier eps └ [emf] Enregistrer le fichier emf
Il y a beaucoup d'endroits auxquels se référer dans la recherche, mais je me suis référé ici pour la méthode de partage par samba de Raspeye.
[hiramine.com] (http://www.hiramine.com/physicalcomputing/raspberrypi3/samba_installconfigconnect.html)
Ici,
/ home / pi est partagé, mais comme c'est un problème si la zone sous pi est complètement visible, j'ai décidé de créer un dossier `` `` [share] '' `` en dessous. Au début, je ne correspondais pas aux noms de dossier `` `` [share] '' `` et `` `` path = / home / share
, et le partage ne fonctionnait pas, donc j'étais inquiet pendant un moment. Le flux approximatif est le suivant.
Installation
sudo apt-get update
sudo apt-get install samba
Réécriture du fichier de paramètres (ajouté à la dernière ligne)
sudo nano /etc/samba/smb.conf
smb.conf
#Dernier ajouté
[share]
path = /home/pi/share
read only = No
guest ok = Yes
force user = pi
sudo service smbd restart
Vous pouvez désormais y accéder depuis Windows, Mac et Ubuntu.
C'est un code concret sur la façon de surveiller et ce qu'il fait réellement, mais il y a déjà un bon article là-bas. Je l'ai utilisé comme référence. Celui que j'ai utilisé est le `` chien de garde ''
・ [Watchdog est assez pratique pour la surveillance des fichiers] (http://qiita.com/PyYoshi@github/items/9744a138c018734c69db)
watchdog peut être installé avec
pip install watchdog```. Juste pour être sûr.
Voir sample1.py ci-dessous pour le code. C'est la partie principale à surveiller et à exécuter.
explication facile En plus d'importer autour de watchdog, importez le module pour exécution.
import sample2
Ici, nous faisons cela pour exécuter le code dans sample2.py. (Remplacez cette partie par un fichier exécutable arbitraire)
sample2.py résume les deux codes ci-dessous. Graphique des données Excel avec matplotlib (1) [Convertir le graphique matplotlib au format de fichier emf] (http://qiita.com/gitytm15/items/418ddcd8f58555d7433b)
Étant donné que la cible de surveillance pour les mises à jour de fichiers est ici un fichier Excel, définissez l'extension comme ceci.
#Fichiers à surveiller
observed_file_type = ('.xls','.xlsx')
Définissez le dossier partagé de la tarte à la râpe créée précédemment sur BASEDIR. À l'origine, BASEDIR indique l'emplacement du corps du fichier
#BASEDIR = os.path.abspath(os.path.dirname(__file__))
Bien que ce soit le cas, il est commenté ici. Cette fois, l'adresse du dossier partagé de Raspeye est spécifiée comme suit.
BASEDIR ='/home/pi/share/DATA'
Vient ensuite la partie exécution lorsqu'un événement se produit. Ce code sera entré pour chaque événement. Je jette le chemin du fichier Excel mis à jour.
sample2.plot(event.src_path) #Exécuter lors de la création du fichier
Lorsque vous exécutez sample1.py, Raspai entre dans le mode de surveillance du dossier spécifié. Il sera exécuté chaque fois que vous déplacerez le fichier Excel dans le dossier spécifié, le modifierez et l'enregistrerez. Ce fichier Excel correspond à la structure qui place X en A1 et Y en B1 dans le tracé de l'axe XY.
sample1.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import os
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
import sample2 #← Module à exécuter en fonction de la mise à jour(Ici, sample2)
#Fichiers à surveiller
observed_file_type = ('.xls','.xlsx')
#Réglage
#BASEDIR = os.path.abspath(os.path.dirname(__file__))
#→ Si vous souhaitez surveiller l'emplacement de ce fichier programme
#Spécifiez un dossier partagé pour Raspeye
#dossier partagé[share]Dans,[DATA]Placé le dossier
BASEDIR ='/home/pi/share/DATA'
#Vérifiez si le fichier modifié est surveillé
def match(path):
return any([path.endswith(ft) for ft in observed_file_type])
#Gestionnaire d'événements au moment du changement
class ChangeHandler(FileSystemEventHandler):
def on_create(self, event):
if event.is_directory:
return
if match(event.src_path):
print('Create',event.src_path)
sample2.plot(event.src_path) #Exécuter lors de la création du fichier
def on_modified(self, event):
if event.is_directory:
return
if match(event.src_path):
print('Modified',event.src_path)
sample2.plot(event.src_path) #Exécuter lors du changement de fichier
def on_deleted(self, event):
if event.is_directory:
return
if match(event.src_path):
print('delete',event.src_path)
#Ne rien faire lorsque le fichier est supprimé
if __name__ in '__main__':
event_handler = ChangeHandler()
observer = Observer()
observer.schedule(event_handler, BASEDIR, recursive=True)
print('start dir=',BASEDIR)
observer.start()
try:
while True:
time.sleep(0.1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Il est appelé lorsque le fichier Excel est mis à jour ou lorsqu'un nouveau fichier est créé.
Le chemin Excel sera jeté, alors lisez ce fichier Excel et tracez-le. Après cela, dessinez un graphique et enregistrez-le au format eps, et convertissez-le en même temps du fichier svg en fichier emf et enregistrez-le. Supprimez le fichier svg d'origine.
Les modules requis sont: ・ Pandas ・ Matplotlib ・ Sous-processus
sample2.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import subprocess
import os
#Spécifiez l'emplacement du fichier de police ubuntu(C:\Windows\Fonts\Toute police)
fp = FontProperties(fname="/usr/share/fonts/truetype/fonts-japanese-gothic.ttf")
def dataload(path): #Charger dans Pandas DataFrame
df=pd.read_excel(path)
return df
def graph(df):
#Lire les données des axes X et Y à partir du bloc de données
#Spécifié par colonne
x=df[[0]]
y=df[[1]]
#Graph
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_yscale('linear')
#ax1.set_yscale('log')
#ax1.set_ylim(-1.1, 1.1)
#ax1.set_xlim(0,360)
ax1.set_title("Exemple de graphique",fontdict = {"fontproperties": fp},fontsize=12)
ax1.set_xlabel("axe x",fontdict = {"fontproperties": fp},fontsize=12)
ax1.set_ylabel("axe y",fontdict = {"fontproperties": fp},fontsize=12)
ax1.scatter(x, y,s=1,c='r',label='sin')
ax1.legend(loc="upper right")
def graph_save(path):
SAVEDIR=os.path.dirname(path) #Chemin du fichier
fname, ext = os.path.splitext( os.path.basename(path) ) #Nom de fichier uniquement
plt.savefig(SAVEDIR+'/eps/'+fname+".eps") #eps enregistrer
plt.savefig(SAVEDIR+fname+".svg") #Enregistrer en tant que svg pour la conversion emf
call_cmd='inkscape ' + SAVEDIR+fname + '.svg -M ' + SAVEDIR+'/emf/'+fname +'.emf'
subprocess.call(call_cmd,shell=True)
os.remove(SAVEDIR+fname+".svg") #Je n'ai pas besoin de svg, alors supprimez-le
def plot(path):
#Appelé depuis un programme de surveillance
df=dataload(path) #Charger Excel en tant que cadre de données pandas
graph(df) #Dessin graphique avec matplotlib
graph_save(path) #Enregistrer et convertir des graphiques
if __name__ == '__main__':
SAVEDIR='/home/pi/share/DATA/'
path='/home/pi/Desktop/sample.xlsx'
plot(path)
c'est tout