Salvare i dati in un file ...

di il
4 risposte

Salvare i dati in un file ...

Ave a tutti ... mi scuso subito se sto facendo qualcosa di sbagliato ... = mi sono appena iscritto e forse devo presentarmi da qualche parte ... (se si, mi dite DOVE ??).
Provo a scrivere qui il mio problemino ... :
sto usando un programma che non ho scritto io (lo so, è questo il mio primo errore ... ma io Python NON lo conosco .. sto imparandolo adesso .. MA il programma mi serve per far funzionare un sistema di acquisizione dati = lo uso e intanto lo imparo ... Però adesso ho un problema (spero sia, per voi, una banalità ... ) :
quando tento di salvare i dati su file mi appare questo messaggio da terminale (io uso Linux Mint) :

Traceback (most recent call last):
File "dmm_control.py", line 610, in on_save_csv
style=wx.SAVE | wx.OVERWRITE_PROMPT)
AttributeError: 'module' object has no attribute 'SAVE'


sono andato a cercarmi la linea 610 nel file Python che sto usando .. e forse è questo il punto dove c'è qualcosa che non va :

def on_save_csv(self, event):
file_choices = "CSV (*.csv)|*.csv"
dlg = wx.FileDialog(
self,
message="Save Data as...",
defaultDir=os.getcwd(),
defaultFile="output.csv",
wildcard=file_choices,
style=wx.SAVE | wx.OVERWRITE_PROMPT)
<-- questa è la linea 610
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
with open(path, "wb") as f:
writer = csv.writer(f)
writer.writerow([self.Mode0, "Timestamp (ms)"])
for i in range(0, self.dataval.getlen()):
writer.writerow([self.data, self.timing])


.... bene, come vedete non so niente ... (o poco .. ) e quindi provo a chiedere a Voi !!!
(dimenticavo : i dati del mio hardware/software, se servissero, sono questi :

sto usando un PC con AMD64 Phenom II X2 550, con 8GB
il s.o. è Linux Mint 18.3 Sylvia
Il Python che uso è questo : Python 2.7.15 |Anaconda, Inc.| (default, May 1 2018, 23:32:55)
[GCC 7.2.0] on linux2

Grazie se vorrete aiutarmi .. intanto io cerco in questo forum se il problema è già stato risolto prima !!!
colgo l'occasione per AUGURARE UN BUON 2019 a TUTTI !!!!!

FS

4 Risposte

  • Re: Salvare i dati in un file ...

    Non conosco wxpython, ma l'errore parla chiaro: wx non ha l'attributo SAVE.
    Andando a vedere la documentazione di wx.FileDialog https://docs.wxpython.org/wx.FileDialog.html#wx-filedialog, presumo che vada scritto
    style=wx.FD_OPEN | wx.FD_OVERWRITE_PROMPT)
    P.S. La prossima volta quando posti codice, mettilo nel tag code
  • Re: Salvare i dati in un file ...

    Wow !! intanto GRAZIE mille per la risposta (ora la proverò !) ... e intanto cerco di capire cos'è un "tag code" ...
  • Re: Salvare i dati in un file ...

    Ciao ! Ho provato ma temo non vada ancora bene ... ora l'errore segnalato è questo :

    GLib-GIO-Message: 16:22:11.562: Using the 'memory' GSettings backend. Your settings will not be saved or shared with other applications.
    Traceback (most recent call last):
    File "dmm_control.py", line 610, in on_save_csv
    style=wx.FD_OPEN | wx.FD_OVERWRITE_PROMPT)
    wx._core.wxAssertionError: C++ assertion "!HasFdFlag(wxFD_OPEN) || !HasFdFlag(wxFD_OVERWRITE_PROMPT)" failed at /home/vagrant/wxPython-4.0.3/ext/wxWidgets/src/common/fldlgcmn.cpp(102) in Create(): wxFD_OVERWRITE_PROMPT can't be used with wxFD_OPEN
  • Re: Salvare i dati in un file ...

    Forse è risolto (anche se ancora non ho ben capito come ...)
    1) sulla base di quello che mi avevi detto, ho trovato un altro esempio nella pagina che mi avevi indicato tu :
    https://wxpython.org/Phoenix/docs/html/wx.FileDialog.html
    dove, tra le altre cose, c'è scritto :

    with wx.FileDialog(self, "Save XYZ file", wildcard="XYZ files (*.xyz)|*.xyz",
    style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT) as fileDialog:


    ho allora provato a modificare così la linea 610 :
    style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
    if dlg.ShowModal() == wx.ID_OK:
    path = dlg.GetPath()


    e, incredibilmente (nel senso che non ho ancora capito cosa ho fatto ... ) FUNZIONA !!!!

    Grazie ancora per l'attenzione !!!!!
Devi accedere o registrarti per scrivere nel forum
4 risposte