【问题标题】:Find all “*.wav” files that created yesterday on linux host with python使用 python 查找昨天在 linux 主机上创建的所有“*.wav”文件
【发布时间】:2020-04-20 09:49:00
【问题描述】:

Linux 主机上有很多 .wav 文件,每天都会创建很多这些文件。我想在子目录上找到昨天(脚本运行前一天)创建的所有 wav 文件,并使用 python 脚本将它们转换为 mp3 格式。我运行 os.walk ( path ) 来查找“.wav”文件,但无法检查它们是否是昨天创建的。

for root, dir, files in os.walk(path):
    for file in files:
        if file.endswith('.wav'):
            wav = root + '/' + str(file)
            cmd = 'lame --preset insane %s' % wav
            subprocess.call(cmd, shell=True)

您的回答对您有很大帮助。

提前致谢

【问题讨论】:

  • 您是否考虑过将findmtime/ctime 选项一起使用?还是必须在 Python 中?在我看来,由于您的 Python 正在调用外部 lame 进程来完成繁重的工作,您不妨完全绕过 Python。

标签: python python-3.x linux file-conversion


【解决方案1】:

Python 的os 提供,正如docs 所说的关于处理文件时间的三个功能:

  • os.path.getatime(path) - 上次访问路径的时间
  • os.path.getmtime(path) - 路径的最后修改时间
  • os.path.getctime(path) - path 的最后一次元数据更改的 Unix 时间

据说没有一个可以为 Unix 系统提供创建时间,但也许其中一个足以满足您的目的? (如果您在创建 *.wav 文件后不更改它们,我建议您尝试 getmtime

所有这些函数都以秒为单位返回自纪元开始以来的时间。您可以使用time 的模块time 在纪元开始后的几秒内获取“现在”,即:

import time
now = time.time()

然后将其与您从文件中获取的时间进行比较,例如:

import os
import time
now = time.time()
mtime = os.path.getmtime('path/to/some/file.wav')
if (mtime + 24*60*60) >= now:
    print('File was altered during last 24 hours')

【讨论】:

  • 如果我使用 if (mtime + 24*60*60) >= now:我找到了昨天和前一天创建的所有 wav 文件。我想搜索昨天创建的文件
猜你喜欢
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 2013-06-20
  • 2014-11-09
  • 1970-01-01
  • 2018-07-17
相关资源
最近更新 更多