Gestione file e cartelle¶
ls¶
ls(path) stampa nel log i nomi dei file trovati nel percorso indicato. Restituisce un vettore di nomi di file.
Argomenti:
- path: il percorso (default la cartella di lavoro)
pr¶
pr stampa nel log il contenuto del file indicato. Restituisce un vettore col le righe del file.
Argomenti:
- filename: il nome del file da stampare
- r|-r|r1..r2: il numero di righe da stampare. Un range indica l’intervallo di righe. Un numero negativo indica il numero di righe a partire dalla fine del file. (default tutte)
- c|-c|c1..c2: il numero di colonne da stampare. Un range indica l’intervallo di colonne. Un numero negativo indica il numero di colonne a partire dalla fine della riga. (default tutte)
- false|true|n: indicando true stampa un righello della lunghezza della prima riga del file; indicando un numero stampa un righello della lunghezza indicata. (default: false)
- :rownum => false|true: stampa il numero di riga (default: true)
sys¶
L’oggetto sys dispone di vari metodi per la gestione dei file e delle cartelle.
- getwd: restituisce il percorso della cartella di lavoro
- mkdir path: crea una nuova cartella
- delete filename: cancella un file
- rename oldname => newname: rinomina un file
- copy source => destination: copia un file
- move source => destination: muove un file
- rmdir path: cancella una cartella e tutto il suo contenuto (file e cartelle comprese)
Eventuali cartelle non esistenti nella destinazione, verranno create. rename, copy e move accettano i parametri loogici :quiet per non visualizzare messaggi e :force per sovrascrivere eventuali file esistenti. Le varianti rename_f, copy_f e move_f impostano automaticamente il parametro :force => true.
1 2 3 4 5 6 7 8 | sys.delete 'test.dat'
sys.rename "test1.dat" => 'test.dat'
sys.copy 'test.txt' => "test1.txt"
sys.copy "test.txt" => "0/1/2/test3.txt"
sys.copy 'x/test10.txt' => ''
sys.move 'test.txt' => '0/'
sys.mkdir 'a/b/c'
sys.rmdir 'a/b'
|
Attenzione
rmdir cancella tutto l’albero di file e cartelle a partire dal percorso indicato, senza chiedere alcuna conferma
- list path: restituisce un vettore con i nomi dei file trovati nel percorso indicato (solo file non cartelle):
1 2 3 | sys.list("dati/*.sav") # => ["12241.SAV", "12241old.SAV"]
sys.list("*.dat") # => ["12241d.DAT", "test.dat"]
sys.list("**/*.dat") # => ["12241d.DAT", "test.dat", "old/xx.dat", "save/12241b.DAT", "save/12241a.dat", "save/12241c.dat"]
|
- file filename: ritorna un oggetto contente alcune informazioni sul file:
- size: restituisce la lunghezza in byte del file
- zero?: restituisce true se il file è lungo 0 byte
- file?: restituisce true se è un file
- folder?: restituisce true se è una cartella
- ctime: restituisce un oggetto Time con la data e ora di creazione del file
- mtime: restituisce un oggetto Time con la data e ora di modifica del file
- name: restituisce il nome del file senza percorso
- filename: restituisce il nome del file completo di percorso
- path: restituisce il percorso del file
- extension: restituisce l’estensione del file
1 2 3 4 5 6 7 8 9 10 11 12 13 | sys.file('data/demo_data.sav').size # => 253601
x = sys.file 'data/demo_data.sav'
x.size # => 253601
x.zero? # => false
x.file? # => true
x.folder? # => false
x.ctime # => 2016-07-11 13:38:44 +0200
x.mtime # => 2017-11-29 15:01:09 +0100
x.name # => "demo_data.sav"
x.filename # => "D:/pTabs/pTabs2/__test/data/demo_data.sav"
x.path # => "D:/pTabs/pTabs2/__test/data"
x.extension # => ".sav"
|
- run command: esegue un comando esterno.
1 2 | # manda in stampa il report PDF
sys.run '"C:/Program Files (x86)/Adobe/Acrobat Reader DC/Reader/AcroRd32.exe" /t report.pdf'
|
- download url, destination, :user => username, :psw => password: scarica un file tramite i protocolli HTTP/HTTPS/FTP
- webdav.download url, destination, :user => username, :psw => password: scarica un file tramite il protocollo WEBDAV
Eventuali cartelle non esistenti nella destinazione, verranno create. Se il file di destinazione esiste, verrà sovrascritto.
1 2 3 4 5 6 7 8 9 10 11 | # HTTPS
sys.download 'https://www.google.com/a/cpanel/googleproductforums.com/images/logo.gif', 'images/google.gif'
# FTP accesso anonimo
sys.download 'ftp://speedtest.tele2.net/1KB.zip', '1KB.zip'
# FTP accesso con username e password
sys.download 'ftp://test.rebex.net/readme.txt', 'rebex_readme.txt', user: 'demo', psw: 'password'
# WEBDAV
sys.webdav.download 'https://domain.com/readme.txt', 'readme.txt', user: 'demo', psw: 'password'
|
- upload localfile, url, :user => username, :psw => password: carica un file tramite il protocollo FTP
- webdav.upload localfile, url, :user => username, :psw => password: carica un file tramite il protocollo WEBDAV
L’url può indicare la cartella di destinazione e/o il nome del file. Un nome non seguito dallo slash (/) viene interpretato come nuovo nome di file. Se il file di destinazione esiste, verrà sovrascritto.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # FTP accesso anonimo
sys.upload '1KB.zip', 'ftp://speedtest.tele2.net//upload/'
# FTP accesso con username e password
sys.upload 'report.xlsx', 'ftp://ftp.domain.com', user: 'demo', psw: 'password'
# L'ultima parte dell'URL definisce il nome del file di destinazione
sys.upload 'report.xlsx', 'ftp://ftp.domain.com/report12345.xlsx'
# L'ultima parte dell'URL definisce la cartella di destinazione. Il nome del file sarà uguale al nome del file locale
sys.upload 'report.xlsx', 'ftp://ftp.domain.com/reports/'
# WEBDAV
sys.webdav.upload 'report.xlsx', 'https://domain.com/report12345.xlsx', user: 'demo', psw: 'password'
|
Importante
In tutti i percorsi il separatore di cartelle è lo slash / e non il backslash \. Il backslash viene interpretato come sequenza di escape congiuntamente al carattere seguente.