Sto scrivendo uno script per pulire il desktop, spostando i file in base al tipo di file. Il primo passo, a quanto pare, è a ls -1 /Users/user/Desktop
(Sono su Mac OSX). Quindi, usando Python, come potrei eseguire un comando, quindi scrivere l'output in un file in una directory specifica? Dal momento che questo sarà non documentato, e sarò l'unico utente, non mi dispiace (preferisco?) Se utilizza os.system()
.scrittura del file di riga di comando nel file
risposta
È possibile reindirizzare l'output standard su qualsiasi file utilizzando >
in comando.
$ ls /Users/user/Desktop > out.txt
con Python,
os.system('ls /Users/user/Desktop > out.txt')
Tuttavia, se si utilizza python allora invece di usare ls
comando è possibile utilizzare os.listdir
per elencare tutti i file nella directory.
path = '/Users/user/Desktop'
files = os.listdir(path)
print files
Dopo la scrematura la documentazione python per eseguire comandi di shell e ottenere l'output è possibile utilizzare il modulo subprocess con il metodo check_output
.
Successivamente è possibile scrivere semplicemente quell'output in un file con le funzioni standard di Python IO: File IO in python.
Per aprire un file, è possibile utilizzare il comando f = open(/Path/To/File)
. La sintassi è f = open('/Path/To/File', 'type')
dove 'type' è r per la lettura, w per la scrittura e a per l'accodamento. I comandi per farlo sono f.read()
e f.write('content_to_write')
. Per ottenere l'output da un comando della riga di comando, è necessario utilizzare popen e sottoprocesso anziché os.system()
. os.system() non restituisce un valore. Puoi leggere ulteriori informazioni su popen here.
Quali file si desidera spostare? Dai un'occhiata a http://docs.python.org/library/shutil.html per le operazioni sui file usando Python. –
Lo script di shell è sufficiente per questo –
Se si utilizzano script di shell, leggere ulteriori informazioni su pipe e reindirizzamento. –