Python - 根据儒略日增量重命名文件

标签 python glob

问题: 我有一堆从组织下载的文件。在他们的数据目录中途,该组织更改了命名约定(原因未知)。我正在寻找创建一个脚本,它将把文件放在一个目录中并以相同的方式重命名文件,但只是“有一天返回”。

下面是一个文件如何命名的示例:org2015365_res_version.asc

我需要的是仅将本例中的年份 (2015365) 更改为 2015364 的逻辑。此逻辑需要跨越几年,所以 2015001 将是 2014365

我想我不确定这是否可行,因为它不适用于当前日期,因此使用像 datetime 这样的模块似乎不适用。

我想出的部分逻辑。我知道它充其量只是简陋的,但想尝试一下。

# open all files
all_data = glob.glob('/somedir/org*.asc')

# empty array to be appended to
day = []
year = []

# loop through all files
for f in all_data:
    # get first part of string, renders org2015365
    f_split = f.split('_')[0]
    # get only year day - renders 2015365
    year_day = f_split.replace(f_split[:3], '')
    # get only day - renders 365
    days = year_day.replace(year_day[0:4], '')
    # get only year - renders 2015
    day.append(days)
    years = year_day.replace(year_day[4:], '')
    year.append(years)
    # convert to int for easier processing 
    day = [int(i) for i in day]
    year = [int(i) for i in year]

    if day == 001 & year == 2016:
        day = 365
        year = 2015
    elif day == 001 & year == 2015:
        day = 365
        year = 2014
    else:
        day = day - 1

除了上面的逻辑,我还从 this 中发现了下面的函数帖子,我不确定将其与上面的部分逻辑结合起来的最佳方法是什么。想法?

import glob
import os


def rename(dir, pattern, titlePattern):
    for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
        title, ext = os.path.splitext(os.path.basename(pathAndFilename))
        os.rename(pathAndFilename,
                  os.path.join(dir, titlePattern % title + ext))

rename(r'c:\temp\xx', r'*.doc', r'new(%s)')

帮帮我,stackoverflow。你是我唯一的希望。

最佳答案

您可以使用 datetime模块:

#First argument - string like 2015365, second argument - format
dt = datetime.datetime.strptime(year_day,'%Y%j')
#Time shift
dt = dt + datetime.timedelta(days=-1)
#Year with shift
nyear = dt.year
#Day in year with shift
nday = dt.timetuple().tm_yday

关于Python - 根据儒略日增量重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40050149/

相关文章:

用于匹配目录和文件的 Java Globbing 模式

javascript - Node glob 中的方括号出现问题

python - Python 中的 HTML 解析器

python - 我怎么知道页面已经完成加载?

python - Paramiko/scp - 检查远程主机上是否存在文件

linux - 对列出目录绝对路径的 ls 命令感到困惑

bash - 为什么 extglob 除了打破 except 条件?

python - os.walk 还是 glob 更快?

python - 扩展 SignupForm 类的 allauth 问题

python - 使用正则表达式查找函数调用