запись вывода командной строки в файл - PullRequest
5 голосов
/ 25 января 2012

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

Ответы [ 3 ]

15 голосов
/ 25 января 2012

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

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

Использование python,

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

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

path = '/Users/user/Desktop'
files = os.listdir(path)
print files
4 голосов
/ 25 января 2012

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

После этого вы можете просто записать этот вывод в файл со стандартными функциями Python IO: File IO в python .

1 голос
/ 25 января 2012

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

...