Come decomprimere utilizzando i comandi di archivio zip di JMPIn una domanda precedente che ho posto, ho chiesto se fosse possibile decomprimere i file.Ho letto un blog ( Utilizzo di FILENAME ZIP per decomprimere e leggere i file di dati in SAS - The SAS Dummy ), ma al momento ho difficoltà a seguirlo utilizzando JSL.
Ho una cartella con 150 cartelle zippate.Ogni cartella ha un nome di dispositivo, seguito da un punteggio dell'ordine, quindi dalla data (ad es. Dispositivo X_2016_07_20.zip).Voglio creare una nuova cartella con il nome del dispositivo (che posso far funzionare).Posso aprire una cartella zip e vedere tutti i diversi file all'interno, ma non riesco a capire come decomprimere (o addirittura copiare) nella nuova cartella.Qualcuno per favore può darmi una mano?
Questo è quello che ho finora:
directory = Pick Directory();
filesInDirectory = Files In Directory( directory );
nFiles = N Items( filesInDirectory ); //get number of zip files in directory
For( i = 1, i <= nFiles, i++,
fileName = filesInDirectory;
pos = Contains( fileName, "_" );
deviceName = Left( fileName, pos - 1 ); //get the device name
subDir = directory || deviceName;
//Create Directory(subDir); //eventually create a new sub directory
za = Open( directory || fileName, zip );
dirlist = za << dir;
Show( dirlist ) // see all contents of zipped folder
;
);
Ri: Come decomprimere usando i comandi di archivio zip di JMPSto seguendo il codice di esempio sopra, ma ho ottenuto dati vuoti quando provo a leggere il contenuto del file zip.
Ad esempio, file1.csv compresso in file1.zip e sto provando a leggere file1.csv da file1.zip
Potresti per favore indicarmi cosa c'è che non va nel mio codice?
za = Open( unzip_file_list[1], zip);
dirlist = za << dir;
// below line correctly giving me file1.csv
show(dirlist);
// below two lines correctly gives me full file path.
full_path = directory || dirlist[1];
show(full_path);
// below line returns "Empty()" in log windows.
txt = za << read( full_path);
Ri: Come decomprimere usando i comandi di archivio zip di JMP<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Benvenuto/grazie e un follow-up in ritardo: Carica dati compressi potrebbe anche essere utile.
Ri: Come decomprimere usando i comandi di archivio zip di JMPGrazie mille!Stavo decisamente complicando tutto.Ottima anche la spiegazione.
Ri: Come decomprimere usando i comandi di archivio zip di JMPla riga successiva utilizza l'oggetto archivio zip, za, per leggere un membro dall'archivio.qualcosa come questo:
za = Open( "$desktop\test.zip", zip );
dirlist = za << dir;
Show( dirlist ); // see all contents of zipped folder
// dirlist = {"fft.jmp", "fft2.jsl"};
For( i = 1, i <= N Items( dirlist ), i++,
If( Right( dirlist, 4 ) == ".jmp" /*binary data*/,
blob = za << read( dirlist, Format( blob ) );
Save Text File( "$desktop\deleteme_" || dirlist, blob );
);
If( Right( dirlist, 4 ) == ".jsl" /*text data*/,
text = za << read( dirlist );
Save Text File( "$desktop\deleteme_" || dirlist, text );
);
);
ci sono due esempi, in grassetto, perché un file zip potrebbe contenere dati binari (una tabella di dati JMP in questo caso) o testo normale (uno script JMP).I dati binari non possono essere archiviati in una stringa JSL, ma un BLOB funzionerà.La riga successiva, saveTextFile, comprende sia le stringhe che i BLOB (e salverà un file binario per un BLOB, nonostante il suo nome).Non dovresti dipendere dall'ordine dei membri nel file zip, specialmente se qualcuno potrebbe aver modificato/aggiunto/eliminato membri da loro.
(Presumo che tu voglia estrarre i membri, non copiare il file .zip in un altro file .zip.Potresti farlo senza aprire affatto il file zip.)
modifica: puoi usare BLOB anche per i file di testo, se li stai solo copiando.Se vuoi elaborare il testo in JSL, BLOB lo renderà più difficile.
Ri: Come decomprimere utilizzando i comandi di archivio zip JMPper ottenere le rispettive voci, devi usare i come indice, ad esempio dirlist[i] invece di dirlist
quindi il codice sopra funziona alla grande.
za = Open( "$desktop\test.zip", zip );
dirlist = za << dir;
For( i = 1, i <= N Items( dirlist ), i++,
blob = za << read( <FONT color="#339966"><STRONG>dirlist[i]</STRONG></FONT>, Format( blob ) );
);
回复: Come decomprimere utilizzando i comandi di archivio zip JMPRP = Run Program( Executable( "C:\Program Files\WinRAR\WinRAR.exe" ), Options( {"e -or C:\1\abc.7z C:\2"} ) );