python文件名带日期变量,关于python:从字符串中获取文件名和日期时间

该博客讨论如何在Python3中从格式为'name_YYYY_MM_DD.txt'的文件名中提取字符串前缀和日期,并将日期转换为适合SQL存储的格式。作者分享了一个解决方案,涉及使用os.path和datetime库来分割文件名,提取所需部分,并将日期字符串转换为datetime对象,然后格式化为SQL兼容的日期字符串。
摘要由CSDN通过智能技术生成

我有以下格式的文件名:name_2016_04_16.txt

我正在使用python3,我想从这个文件中提取两件事。 前缀或名称值作为字符串,日期作为字符串中表示的日期的DateTime值。 对于上面的例子,我想提取:

filename:name作为String

日期:2016年4月16日作为DateTime

我将这些值保存到数据库,所以我希望DateTime变量是sql友好的。

有没有可以帮我这么做的图书馆? 或者有一个简单的方法来解决这个问题?

我按照建议尝试了以下方法:

filename = os.path.splitext(filename)[0]

print(filename)

filename.split("_")[1::]

print(filename)

'/'.join(filename.split("_")[1::])

print(filename)

但它输出:

name_2016_04_16

name_2016_04_16

name_2016_04_16

并没有真正提取名称和日期。

谢谢!

你有没有为此做过任何努力呢?

我可以使用os.path模块将它从整个文件路径中获取,但我仍然坚持从剩下的字符串中获取这两个值。

我先删除文件扩展名,然后用下划线拆分,删除'name'字段。最后,我将通过斜杠加入(可能会记录此值)并使用datetime库解析日期

import os

from datetime import datetime

file_name = os.path.splitext("name_2016_04_16.txt")[0]

date_string = '/'.join(file_name.split("_")[1::])

parsed_date = datetime.strptime(date_string,"%Y/%m/%d")

为了使日期字符串sql友好,我发现这样的帖子:将一个Python datetime.datetime对象插入到MySQL中,这表明以下内容应该可行

sql_friendly_string = parsed_date.strftime('%Y-%m-%d %H:%M:%S')

我尝试了你的建议并更新了我的帖子,但是它只删除了扩展而没有完成其余的工作。

FlameDra:在您发布的示例中,您打印了变量filename 3次...我编辑的答案有点清晰

你的更新对我有用,谢谢!

您可以在"。"上拆分文件名。然后在"_"上再次拆分。这应该给你一个字符串列表。第一个是名称,第二个到第四个分别是年,月和日。然后将日期转换为SQL友好表单。

像这样的东西:

rawname ="name_2016_04_16.txt"

filename = rawname.split(".")[0] #drop the .txt

name = filename.split("_")[0] #provided there's no underscore in the name part of the filename

year = filename.split("_")[1]

month = filename.split("_")[2]

day = filename.split("_")[3]

datestring = (month,day,year) # temp string to store a the tuple in the required order

date ="/".join(datestring) #as shown above

datestring = (year,month,day)

SQL_date ="-".join(datestring ) # SQL date

print name

print date

print SQL_date

除非您想使用日期时间库来获取日期时间日期,否则在这种情况下查找日期时间库

然后你可以做这样的事情:

SQL_date = datetime.strptime(date, '%m/%d/%Y')

这是我现在能想到的最明确的方式。我确定有更短的方法:)

抱歉格式不好,我在手机上发帖。

我得到一个TypeError:当我尝试创建日期时,join()只接受一个参数(给定3个)。

抱歉,在我的手机上打字并无法测试。

@Lloyd Kirk在我的回复中提到了那个简短而优雅的解决方案:)

简单地这样做怎么样?

filename = 'name_2016_04_16.txt'

date = filename[-14:-4] # counting from the end will ensure that you extract the date no matter what the"name" is and how long it is

prefix = filename [:-14]

from datetime import datetime

date = datetime.strptime(date, '%Y_%m_%d') # this turns the string into a datetime object

(但是,这适用于Python 2.7,如果适用于Python 3,则需要自行查找。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值