更改文件夹中pdf文件的日期格式

一个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'
alexzip 回答:更改文件夹中pdf文件的日期格式

您有两个错误。

首先:您具有文件夹名称,但不会从文件夹中获取文件名。您必须使用os.listdir()glob.glob(...)来获取它。

import os

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

接下来,您必须使用循环来分别更改每个文件名。

第二:日期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,%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的模块,而使用具有该名称的变量则无法访问模块。>


编辑:名称为“ 1972年10月1日,A.pdf”,“ 1972年10月1日,B.pdf”的问题

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

import datetime

filenames = ['October 1,1972 A.pdf','October 1,1972 B.pdf',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],%Y")
            parts[0] = dt.strftime("%m-%d-%Y")
            new_name = ' '.join(parts)
        else:
            dt = datetime.datetime.strptime(name,%Y.pdf")
            new_name = dt.strftime("%m-%d-%Y.pdf")

        print(name,'->',new_name)
,

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

文件名= os.listdir(文件夹)

用于文件名中的名称:

if name.endswith('A.pdf'):
    dt = datetime.datetime.strptime(name,%Y A.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('B.pdf'):
    dt = datetime.datetime.strptime(name,%Y B.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('C.pdf'):
    dt = datetime.datetime.strptime(name,%Y C.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('D.pdf'):
    dt = datetime.datetime.strptime(name,%Y D.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('E.pdf'):
    dt = datetime.datetime.strptime(name,%Y E.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('F.pdf'):
    dt = datetime.datetime.strptime(name,%Y F.pdf")
    new_name = dt.strftime("%Y-%m-%d.pdf")
    print(new_name)
if name.endswith('G.pdf'):
    dt = datetime.datetime.strptime(name,%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)
本文链接:https://www.f2er.com/3170067.html

大家都在问