Я пытаюсь использовать ls -l
из python, чтобы проверить дату последнего изменения файла.
os.listdir
не отображает формат длинного списка. subprocess.call
показывает формат, но на самом деле печатает его и возвращает 0. Я хочу, чтобы его можно было поместить в переменную. Есть идеи?
Кроме того, я попробовал
subprocess.call("ls","*.py")
который отвечает
ls: cannot access *.py: No such file or directory
он работает с shell=True
, но если кто-то может объяснить, почему он не работает без него, я буду признателен. Если вы знаете, как заставить его работать, еще лучше.
Он не работает без shell=True
потому что *
является символом расширения оболочки - от *.py
до списка файлов, заканчивающихся на .py
- это функция, выполняемая самой оболочкой, а не ls
или python
.
Если вы хотите получить результат команды, вызванной через subprocess
, вы должны использовать subprocess.check_output()
или subprocess.Popen
.
ls_output = subprocess.check_output(['ls', '-l'])
ls
, а вместо этого использовать os.listdir()
и os.stat()
(или служебные функции в os.path
и модуле glob
.)
os.path.getmtime()
?