理论上很简单:来自所有子目录的文件名和日期的 CSV (Unix(OSX)
Theoretically simple: CSV of filenames and dates from all subdirectories (Unix(OSX)
所以我想做的事情看起来很简单,但是...我就是做不到。
我有一个包含多个子目录的随机文件夹,其中包含很多文件(如 2k)。
现在我想写一个小程序/脚本来生成一个 txt/csv 文件,它只包含:
- 文件名
- 最后修改日期
并不是:
- 文件的完整路径
- 隐藏文件
- 目录
支持os在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([=12=],index([=12=],))"\""",""\""" "", ""\""",""\"""\""}' > list.csv
Almost 在那里但是...除了 Excel 弄乱了 CSV,我无法摆脱完整路径,但我只需要名称和日期...
find PATH -type f | awk '{print "\""substr([=13=],index([=13=],))"\""",""\""" "", ""\""",""\"""\""}' > 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()
所以我想做的事情看起来很简单,但是...我就是做不到。
我有一个包含多个子目录的随机文件夹,其中包含很多文件(如 2k)。 现在我想写一个小程序/脚本来生成一个 txt/csv 文件,它只包含: - 文件名 - 最后修改日期 并不是: - 文件的完整路径 - 隐藏文件 - 目录
支持os在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([=12=],index([=12=],))"\""",""\""" "", ""\""",""\"""\""}' > list.csv
Almost 在那里但是...除了 Excel 弄乱了 CSV,我无法摆脱完整路径,但我只需要名称和日期...
find PATH -type f | awk '{print "\""substr([=13=],index([=13=],))"\""",""\""" "", ""\""",""\"""\""}' > 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()