- 
                Notifications
    You must be signed in to change notification settings 
- Fork 24
Open
Description
When running this script under Windows, I get the following error:
D:\Dateien\Dokumente\pyEmonCmsDownload>python.exe -m convert_to_csv.py
Converting phpfina feed 104076
Traceback (most recent call last):
  File "<frozen runpy>", line 189, in _run_module_as_main
  File "<frozen runpy>", line 112, in _get_module_details
  File "D:\Dateien\Dokumente\pyEmonCmsDownload\convert_to_csv.py", line 57, in <module>
    phpfina_convert(username+"/phpfina/",username+"/csv/",f['id'],f['tag'],f['name'])
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Dateien\Dokumente\pyEmonCmsDownload\convert_to_csv.py", line 22, in phpfina_convert
    csv_fh = open(csvdir+str(feedid)+"-"+str(tag)+"-"+str(name)+".csv","w")
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OSError: [Errno 22] Invalid argument: 'niclas/csv/104076-Node:0-node:0:Z1_Temp01-T_DHW_oben.csv'
I think this is due to windows not allowing ":" in file names.
My proposal for a fix: Replace ":" with "-". Here is what this could look like (worked for me), essentially adding those two lines:
csv_path = csvdir+str(feedid)+"-"+str(tag)+"-"+str(name)+".csv"
csv_path = csv_path.replace(":", "-")
Resulting in:
def phpfina_convert(datadir,csvdir,feedid,tag,name):
    meta = phpfina_get_meta(datadir,feedid)
    print(tag)
    print(name)
    csv_path = csvdir+str(feedid)+"-"+str(tag)+"-"+str(name)+".csv"
    csv_path= csv_path.replace(":", "-")
    csv_fh = open(csv_path,"w")
    fh = open(datadir+str(feedid)+".dat","rb")
    for i in range(0,meta['npoints']):
        time = meta['start_time'] + i*meta['interval']
        val = struct.unpack("f",fh.read(4))
        csv_fh.write(str(time)+","+str(val[0])+"\n")
    fh.close()
    csv_fh.close()
    
def phptimeseries_convert(datadir,csvdir,feedid,tag,name):
    if os.path.isfile(datadir+"feed_"+str(feedid)+".MYD"):
        bytesize = os.stat(datadir+"feed_"+str(feedid)+".MYD").st_size
        npoints = int(bytesize/9.0)
        csv_path = csvdir+str(feedid)+"-"+str(tag)+"-"+str(name)+".csv"
        csv_path = csv_path.replace(":", "-")
        csv_fh = open(csv_path,"w")
        fh = open(datadir+"feed_"+str(feedid)+".MYD","rb")
        
        for i in range(0,npoints):
            tmp = struct.unpack('<xIf',fh.read(9))
            csv_fh.write(str(tmp[0])+","+str(tmp[1])+"\n")
        fh.close()
        csv_fh.close()
danielrheinbay
Metadata
Metadata
Assignees
Labels
No labels