2012-01-25 5 views
5

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

+0

Quali file si desidera spostare? Dai un'occhiata a http://docs.python.org/library/shutil.html per le operazioni sui file usando Python. –

+0

Lo script di shell è sufficiente per questo –

+1

Se si utilizzano script di shell, leggere ulteriori informazioni su pipe e reindirizzamento. –

risposta

13

È 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 
+0

Bello. Grazie. – Daniel

+0

ImportError: nessun modulo denominato system. –

+0

@ Suda.nese come si sta tentando di importare? Qual è la tua versione di Python? – taskinoor

4

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.

1

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.