Теоретически просто: CSV имен файлов и дат из всех подкаталогов (Unix (OSX) - PullRequest
0 голосов
/ 24 мая 2019

так что то, что я хочу сделать, кажется простым, но ... я просто не могу заставить его работать.

У меня есть случайная папка с несколькими подкаталогами, включая множество файлов (например, 2k). Теперь я хочу написать небольшую программу / скрипт для создания файла txt / csv, который содержит ТОЛЬКО: - имена файлов - дата последнего изменения и не: - полный путь к файлу - скрытые файлы - справочники

Он должен работать под OSX. Инструмент выбора для меня, чтобы дать ему простой графический интерфейс в настоящее время Python. Основная идея: заставить работать терминальную команду и использовать subprocess / os import для использования этой команды из готовой программы с графическим интерфейсом.

Пока это работает ... Я просто не могу заставить работать соответствующую команду терминала.

Любая помощь высоко ценится, заранее спасибо!

Я попробовал нативные решения на Python без вызова os; но, очевидно, мои простые навыки в питоне не достаточно хороши для этого.

Я пытаюсь построить трубы с помощью ls, find, awk, sed, mtime, stat, ... в основном, бросая что-нибудь вместе, приходя на ум, но ... как-то я просто испортил это.

Все решения, которые я не могу найти в сети, нацелены на несколько другие проблемы, и я не могу собрать все части в одну большую трубу. Одна часть, которую я добавляю, кажется, всегда ломает другую.

find PATH -type f -execdir echo {} ';' > output.txt

Получает все имена файлов без каталогов, скрытых файлов или полного пути. Это именно то, что я хочу, теперь мне просто нужен второй столбец в выходных данных с последними измененными датами ...

ls -lRT | awk '{print "\""substr($0,index($0,$10))"\""",""\""$6" "$7", "$9"\""",""\""$5"\""}' > list.csv

Почти там, но ... кроме того, что Excel не испортил CSV, я не могу избавиться от полного пути, но мне нужны только имена и даты ...

find PATH -type f | awk '{print "\""substr($0,index($0,$10))"\""",""\""$6" "$7", "$9"\""",""\""$5"\""}' > folderlist.csv

Так и хорошо ... это показывает, что минус раз минус не всегда равен плюс. На этом я тоже не пойду.

1 Ответ

0 голосов
/ 24 мая 2019
import os
import time
import csv


PATH = '.'  # This is your start folder, taking current folder as an example
csv_f = list()
for root, dirs, files in os.walk(PATH):
    for file in files:
        if not file.startswith('.'):
            filepath = os.path.join(root, file)
            if os.path.isfile(filepath):  # This check excludes symlinks
                m_time_raw = os.path.getmtime(filepath)
                m_time = time.ctime(m_time_raw)
                csv_f.append([file, m_time])

with open('temp.csv', 'w', newline='') as c:
    writer = csv.writer(c)
    writer.writerows(csv_f)
c.close()
...