A partire da Catalina, Mac OS fornisce supporto per i controlli Privacy su determinate cartelle. Se, ad esempio, uno script tenta di leggere un file sul Desktop con Multiple File Import , verrà visualizzato un popup che indica che JMP Pro 16.app vorrebbe accedere ai file nella cartella Desktop . Se selezioni OK , tutto funziona correttamente. Ma se selezioni Don't Allow , l'istruzione MFI fallirà senza un errore di runtime, ma potrebbe fallire in seguito (poiché non è stata restituita una tabella dati). Ecco un esempio di codice:
fileList = Pick File( "Choose Insight File(s)", "~/Downloads", {"csvOnly|csv"}, 1, 0, "", "multiple" );
:
Multiple File Import( ... );
dt = Current Data Table();
allCols = dt << Get Column Names( String );In questo caso, non esiste alcuna tabella dati corrente, quindi dt non è definito e l'istruzione Ottieni nomi colonne fallisce con il seguente messaggio:
Send Expects Scriptable Object in access or evaluation of 'Send' , dt << /*###*/Get Column Names( String ) /*###*/
La domanda è: qual è il metodo consigliato per determinare se il comando Importazione di più file non è riuscito ad aprire e leggere un file?
Dopo aver selezionato Non consentire nel popup, la domanda non verrà più posta e MFI fallirà silenziosamente. (Nota che l'impostazione può essere modificata in qualsiasi momento in Preferenze di Sistema, Sicurezza e Privacy, Privacy, File e Cartelle, JMP Pro 16.app.)
Più in generale, perché il comando Pick File ha consentito alla finestra di Navigazione di accedere ai file sul Desktop in primo luogo? Sembra che le cartelle private dovrebbero essere escluse dalla finestra di Navigazione.
Vedo anche che questo non è un problema in JMP 15. Quindi il rispetto della privacy delle cartelle è apparentemente qualcosa che è stato aggiunto in JMP 16. (Sto eseguendo 16.2.0.)
Ciao,
Penso che potresti voler contattare il supporto tecnico ( support@jmp.com ) con questa query.
Saluti,
Fil
Dopo aver esaminato ulteriormente questo problema, ho segnalato questo problema allo sviluppo. Sembra che macOS non presenti il prompt necessario ( JMP Pro 16.app vorrebbe accedere ai file nella cartella <> ) per ciascuna directory.Sembra farlo solo per la directory Download. Le altre directory vengono completamente ignorate. Il nostro team di sviluppo continuerà a esplorare questo problema.
Per quanto riguarda la determinazione di quando l'importazione MFI potrebbe non riuscire quando l'accesso alla cartella non è concesso, potresti prendere in considerazione l'utilizzo di quanto segue:
mfi = Multiple File Import(
<<SET folder=""></SET>
Grazie mille, Dahlia, per la tua pazienza e determinazione nell'aiutare a caratterizzare questo. Attendo con ansia un futuro aggiornamento di JMP.
Ho implementato la logica che hai fornito e il mio script ora funziona molto bene e in modo prevedibile.