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 con 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.

  • wd o path: restituisce il percorso della cartella di lavoro
  • folder: restituisce il nome della cartella di lavoro
  • mkdir path: crea una nuova cartella
  • delete filename|filenames: cancella uno o più 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!, copy! e move! 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.