Loading files
ssmith911
Code builds a path to a specific file based on year and month and data station. It works fine when the 7 files are present. If a file is missing it errors and asks the user if they want to help find the file. I would like to avoid the needed user input by checking to see if the file is present before the Loadwave command is executed. If it's not present then execute the Else portion of the If statement and then move on.
FUNCTION LoadAB(yr,month,days)
Variable yr, month, days
Variable/G Arraylength
Arraylength = days*1440
string monnum, filepath, filepath1, filepath2
variable flag=8
// filepath = "P:Metdata:" //For use on a PC Replace the P: with the letter of the correct drive.
//This section builds the path to the file for the loadwave commamd
filepath = "Mac Passport:Metdata:" //For use om my MAC. Use the drive name.
If(month < 10) //For single digit month numbers
filepath1 = num2str(yr)+":raw:QA:"
filepath2 ="0"+num2str(Month) +"_CR1000_10A.txt"
Else //For 2 digit month numbers
filepath1 = num2str(yr)+":raw:QA:"
filepath2 = num2str(Month) +"_CR1000_10A.txt"
EndIf
filepath += filepath1; filepath += filepath2 //Builds the path for the loadwave command
//The path to the file will look like this. The filename changes each month
//Mac Passport:Metdata:2021:raw:QA:02_CR1000_10A.txt
//If the file is present I want to load it and if it's not
//print the file not found statement.
IF(//What goes here)
LoadWave/O/A/J/D/W/K=0/L={0,1,0,0,0}/R={English,2,2,2,2,"Year-Month-DayOfMonth",40} filepath
Wave Tmstamp, WS_10m, WD_10m, WD_SD_10m, WS10Gust, Temp_10m, Temp_2m, Baro_2m, RH_2m
GetTime(Days)
RevMissingLines10()
Make /D/O/N=(arraylength, 9) Ten_A
Ten_A[ ][0] = Tmstamp[p]
Ten_A[ ][1] = WS_10m[p]
Ten_A[ ][2] = WD_10m[p]
Ten_A[ ][3] = WD_SD_10m[p]
Ten_A[ ][4] = WS10Gust[p]
Ten_A[ ][5] = Temp_10m[p]
Ten_A[ ][6] = Temp_2m[p]
Ten_A[ ][7] = Baro_2m[p]
Ten_A[ ][8] = RH_2m[p]
Else
Print "File not Found:", filepath
ENDIF
Variable yr, month, days
Variable/G Arraylength
Arraylength = days*1440
string monnum, filepath, filepath1, filepath2
variable flag=8
// filepath = "P:Metdata:" //For use on a PC Replace the P: with the letter of the correct drive.
//This section builds the path to the file for the loadwave commamd
filepath = "Mac Passport:Metdata:" //For use om my MAC. Use the drive name.
If(month < 10) //For single digit month numbers
filepath1 = num2str(yr)+":raw:QA:"
filepath2 ="0"+num2str(Month) +"_CR1000_10A.txt"
Else //For 2 digit month numbers
filepath1 = num2str(yr)+":raw:QA:"
filepath2 = num2str(Month) +"_CR1000_10A.txt"
EndIf
filepath += filepath1; filepath += filepath2 //Builds the path for the loadwave command
//The path to the file will look like this. The filename changes each month
//Mac Passport:Metdata:2021:raw:QA:02_CR1000_10A.txt
//If the file is present I want to load it and if it's not
//print the file not found statement.
IF(//What goes here)
LoadWave/O/A/J/D/W/K=0/L={0,1,0,0,0}/R={English,2,2,2,2,"Year-Month-DayOfMonth",40} filepath
Wave Tmstamp, WS_10m, WD_10m, WD_SD_10m, WS10Gust, Temp_10m, Temp_2m, Baro_2m, RH_2m
GetTime(Days)
RevMissingLines10()
Make /D/O/N=(arraylength, 9) Ten_A
Ten_A[ ][0] = Tmstamp[p]
Ten_A[ ][1] = WS_10m[p]
Ten_A[ ][2] = WD_10m[p]
Ten_A[ ][3] = WD_SD_10m[p]
Ten_A[ ][4] = WS10Gust[p]
Ten_A[ ][5] = Temp_10m[p]
Ten_A[ ][6] = Temp_2m[p]
Ten_A[ ][7] = Baro_2m[p]
Ten_A[ ][8] = RH_2m[p]
Else
Print "File not Found:", filepath
ENDIF
There are a couple of ways:
Open/R/Z=1 then check V_flag. It will be zero if the file was opened. Then call Close before calling LoadWave.
GetFileFolderInfo
I don't know which is faster, probably the GetFileFolderInfo operation; it is newer than Open by a number of years!
March 4, 2021 at 02:18 pm - Permalink
In reply to There are a couple of ways: … by johnweeks
The GetfileFolderinfo did the trick. Thanks John
March 5, 2021 at 09:18 am - Permalink