запись вывода командной строки в файл

Я пишу скрипт для очистки рабочего стола, перемещая файлы в зависимости от типа файла. Первый шаг, казалось бы, ls -1 /Users/user/Desktop (у меня Mac OSX). Итак, используя Python, как мне запустить команду, а затем записать вывод в файл в определенном каталоге? Поскольку это будет недокументировано, и я буду единственным пользователем, я не возражаю (предпочитаю?), если он использует os.system().


person tkbx    schedule 25.01.2012    source источник
comment
Какие файлы вы хотите переместить? Взгляните на docs.python.org/library/shutil.html для операций с файлами. с помощью Python.   -  person    schedule 25.01.2012
comment
Для этого достаточно шелл-скрипта   -  person Shiplu Mokaddim    schedule 25.01.2012
comment
Если вы используете сценарии оболочки, узнайте больше о каналах и перенаправлении.   -  person Some programmer dude    schedule 25.01.2012
comment
Я не говорю о создании отдельного файла .sh. Комбинации for, if, file будет достаточно.   -  person Shiplu Mokaddim    schedule 25.01.2012
comment
Если вы не создаете сценарий оболочки, вам не следует использовать ls. На самом деле, даже если вы создаете сценарий оболочки, вы должны использовать для этого find.   -  person sorpigal    schedule 25.01.2012


Ответы (3)


Вы можете перенаправить стандартный вывод в любой файл, используя > в команде.

$ ls /Users/user/Desktop > out.txt

Используя питон,

os.system('ls /Users/user/Desktop > out.txt')

Однако, если вы используете python, вместо использования команды ls вы можете использовать os.listdir для вывода списка всех файлов в каталоге.

path = '/Users/user/Desktop'
files = os.listdir(path)
print files
person taskinoor    schedule 25.01.2012
comment
ImportError: Нет модуля с именем system. - person McLan; 26.05.2016
comment
@Suda.nese как пытаетесь импортировать? Какая у вас версия Python? - person taskinoor; 26.05.2016

После просмотра документации Python для запуска команды оболочки и получения вывода вы можете использовать модуль subprocess. методом check_output.

После этого вы можете просто записать этот вывод в файл с помощью стандартных функций ввода-вывода Python: Файл ввода-вывода в Python.

person BergmannF    schedule 25.01.2012

Чтобы открыть файл, вы можете использовать команду f = open(/Path/To/File). Синтаксис — f = open('/Path/To/File', 'type'), где «тип» — это r для чтения, w для записи и a для добавления. Для этого используются команды f.read() и f.write('content_to_write'). Чтобы получить вывод из команды командной строки, вы должны использовать popen и subprocess вместо os.system(). os.system() не возвращает значение. Вы можете прочитать больше на здесь.

person CoffeeRain    schedule 25.01.2012