【问题标题】:How can i copy and move all Folder which are older than 30 days to a _History folder?如何将所有超过 30 天的文件夹复制并移动到 _History 文件夹?
【发布时间】:2019-03-27 08:26:40
【问题描述】:

结构:20170410.1207.te

有一个包含多个文件夹的公司文件夹。所有具有上述结构的超过 30 天的文件夹都应移动到文件夹 _History(基本上是归档它们),但无论使用哪个时间戳,都应至少保留 5 个。

作为时间值,字符串必须取自要转换为日期的文件夹名称,并与今天的日期减去 30 天进行比较。

我还想创建一个日志文件来记录哪些文件夹何时移动到了哪个位置。

下面的代码只显示了文件名,有人可以帮我吗?

import os
import shutil

for subdir, dirs, files in os.walk("C:\Python-Script\Spielwiese"):
    for file in files:
        print(os.path.join(file))

shutil.move("C:\Python-Script\Spielwiese\", "C:\Python-Script\Spielwiese2")

【问题讨论】:

  • 所以,第一件事:你想如何确定文件的年龄? Windows 的创建日期?可以在此处找到有关如何执行此操作的答案:stackoverflow.com/questions/237079/…
  • 是 Windows 创建日期。
  • @YungCarti 请仅用英语发表评论,因为此评论只会为能够阅读/理解德语的个人提供额外的信息/说明..
  • @iLuvLogix 20170410.1207.te 有一个公司文件夹,其中包含多个文件夹。具有上述结构的所有文件夹都应移动到文件夹 _History,超过 30 天,但无论使用哪个时间戳,都应至少保留 5 个。作为时间值,字符串必须取自要转换为日期的文件夹名称,并与今天的日期 - 30 天进行比较。还要创建一个日志文件,记录删除的内容和位置

标签: python copy move


【解决方案1】:

以下代码将返回给定时间范围内所有文件的列表,按 Windows 上的创建时间排序。根据您要过滤的方式,我可以为您提供更多信息。您可以处理结果列表。另一件事是,您应该将pathlib 用于 Windows 文件路径,以免在路径名中遇到德语路径和 unicode 转义问题。

import os
import shutil

found_files = []

for subdir, dirs, files in os.walk("C:\Python-Script\Spielwiese"):
    for file in files:
        name = os.path.join(file)
        create_date = os.path.getctime(file)
        if create_date > some_time: # Put the timeframe here
            found_files.append((name, create_date))
found_files.sort(key=lambda tup: tup[1]) # Sort the files according to creation time

【讨论】:

  • 如何指定时间范围?
  • 你设置了一些时间,例如使用datetime.now() 或使用 timedatetime 包的其他时间点。
猜你喜欢
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
  • 2017-01-30
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2022-11-28
相关资源
最近更新 更多