所以我想做的事情看起来很简单,但是......我无法让它发挥作用。
我有一个包含多个子目录的随机文件夹,其中包含很多文件(如 2k)。现在我想写一个小程序/脚本来生成一个 txt/csv 文件,它只包含: - 文件名 - 最后修改日期而不是: - 文件的完整路径 - 隐藏文件 - 目录
它应该在 OSX 下工作。我选择给它一个简单的 GUI 的工具目前是 python。基本思想:获取终端命令并使用 subprocess / os import 从带有 GUI 的完成程序中使用该命令。
虽然这有效......我似乎无法获得适当的终端命令。
非常感谢任何帮助,提前致谢!
我在没有调用 os 的情况下尝试了原生 python 解决方案;但显然我的 python 技能简单还不够好。
我尝试用 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
所以……这表明减乘以减并不总是等于加。也不会到达我想要的地方。
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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句