在折叠中更改pdf文件的日期格式

2024-10-04 03:23:59 发布

您现在位置:Python中文网/ 问答频道 /正文

zip文件夹很少有pdf文件,它们的名称格式为October 1, 1970.pdfMarch 27, 1995.pdf等 我想在python中将每个文件的格式更改为YYYY-MM-DD

import datetime

date1 = "/Users/akshitarora/Downloads/Akshitpythoncole/"

datetime = datetime.datetime.strptime(date1, "%m-%d-%Y")

print(datetime.strftime("%m-%d-%Y"))

错误:

ValueError: time data '/Users/akshitarora/Downloads/Akshitpythoncole/' 
            does not match format '%m-%d-%Y'

Tags: 文件文件夹名称datetimepdfdownloads格式zip
2条回答

你有两个错误。你知道吗

第一:您有文件夹名,但它不会从文件夹中获取文件名。必须使用os.listdir()glob.glob(...)才能获得它。你知道吗

import os

folder = "/Users/akshitarora/Downloads/Akshitpythoncole/"
filenames = os.listdir(folder)

接下来必须使用loop分别更改每个文件名。你知道吗

第二:日期October 1, 1970不适合格式%m-%d-%Y,但适合%B %d, %Y。你知道吗

当您使用strptime(name, "%B %d, %Y")时,不要忘记删除文件扩展名。或者使用"%B %d, %Y.pdf"格式的扩展名。格式化新名称"%m-%d-%Y.pdf"时也可以使用扩展名


当您要更改名称-using os.rename()-您必须记住,您必须将文件夹添加到文件名以创建完整路径-os.path.join(folder, filename)

我没有测试它(因为我没有这个文件夹和这些文件),但它应该可以工作

import os
import datetime

folder = "/Users/akshitarora/Downloads/Akshitpythoncole/"

filenames = os.listdir(folder)
#filenames = ['October 1, 1970.pdf', 'March 27, 1995.pdf']

for name in filenames:

    if name.endswith('.pdf'):
        dt = datetime.datetime.strptime(name, "%B %d, %Y.pdf")
        new_name = dt.strftime("%m-%d-%Y.pdf")
        print(new_name)

        old_path = os.path.join(folder, name)
        new_path = os.path.join(folder, new_name)

顺便说一句:使用名为datetime的变量不是一个好主意,因为您使用的模块具有相同的名称datetime,并且使用此名称的变量您没有访问模块的权限。你知道吗


编辑:名称“October 1,1972 A.pdf”、“October 1,1972 B.pdf”有问题

我检查name是否有3个空格,然后在最后一个空格将其拆分以获得包含部分的列表 ['October 1, 1972', 'A.pdf']。现在我可以转换第一部分中的日期,然后将其与第二部分连接以创建名称10-01-1972 A.pdf

import datetime

filenames = ['October 1, 1972 A.pdf', 'October 1, 1972 B.pdf', 'October 1, 1972.pdf']

for name in filenames:
    if name.endswith('.pdf'):
        if name.count(' ') == 3:
            parts = name.rsplit(' ', 1) # split on last space
            print(' parts:', parts) 
            dt = datetime.datetime.strptime(parts[0], "%B %d, %Y")
            parts[0] = dt.strftime("%m-%d-%Y")
            new_name = ' '.join(parts)
        else:
            dt = datetime.datetime.strptime(name, "%B %d, %Y.pdf")
            new_name = dt.strftime("%m-%d-%Y.pdf")

        print(name, '->', new_name)

导入操作系统 导入日期时间

文件名=操作系统列表目录(文件夹)

对于文件名中的名称:

if name.endswith('A.pdf'):
    dt = datetime.datetime.strptime(name, "%B %d, %Y A.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('B.pdf'):
    dt = datetime.datetime.strptime(name, "%B %d, %Y B.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('C.pdf'):
    dt = datetime.datetime.strptime(name, "%B %d, %Y C.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('D.pdf'):
    dt = datetime.datetime.strptime(name, "%B %d, %Y D.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('E.pdf'):
    dt = datetime.datetime.strptime(name, "%B %d, %Y E.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('F.pdf'):
    dt = datetime.datetime.strptime(name, "%B %d, %Y F.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('G.pdf'):
    dt = datetime.datetime.strptime(name, "%B %d, %Y G.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)


    old_path = os.path.join(folder, name)
    new_path = os.path.join(folder, newName)

相关问题 更多 >