在Python中将文件名解析为变量

在Python中将文件名解析为变量,python,parsing,Python,Parsing,我有141个文件都是相同格式的。以下是前五项供参考 400km_t150317_054000 400km_t150317_054100 400km_t150317_054200 400km_t150317_054300 400km_t150317_054400 Python中有没有办法创建一个循环来获取文件名的最后一部分并将其保存在时间数组中?054000、054100、054200、054300、054400都是UT时间,我不知道如何让Python将文件名的这一部分提取到一个数组中。使用sp

我有141个文件都是相同格式的。以下是前五项供参考

400km_t150317_054000
400km_t150317_054100
400km_t150317_054200
400km_t150317_054300
400km_t150317_054400

Python中有没有办法创建一个循环来获取文件名的最后一部分并将其保存在时间数组中?054000、054100、054200、054300、054400都是UT时间,我不知道如何让Python将文件名的这一部分提取到一个数组中。

使用split可以从文件名中获取时间。请参阅以下内容

 filename=["400km_t150317_054000", 
"400km_t150317_054100", 
"400km_t150317_054200", 
"400km_t150317_054300", 
"400km_t150317_054400"]
  
time_array=[]                                                                                                                                
for name in filename: 
   time_array.append(name.split('_')[-1]) 
你可以有时间。文件名中的最后一个是什么

 ['054000', '054100', '054200', '054300', '054400']

使用split可以从文件名中获取时间,请参见以下内容

 filename=["400km_t150317_054000", 
"400km_t150317_054100", 
"400km_t150317_054200", 
"400km_t150317_054300", 
"400km_t150317_054400"]
  
time_array=[]                                                                                                                                
for name in filename: 
   time_array.append(name.split('_')[-1]) 
你可以有时间。文件名中的最后一个是什么

 ['054000', '054100', '054200', '054300', '054400']

使用列表理解:

文件名=['400km\u t150317\u 054000'、'400km\u t150317\u 054100'、'400km\u t150317\u 054200', “400km_t150317_054300”、“400km_t150317_054400”] 输出=[x.split'.[-1]用于文件名中的x] 打印输出 这张照片是:

['054000', '054100', '054200', '054300', '054400']

使用列表理解:

文件名=['400km\u t150317\u 054000'、'400km\u t150317\u 054100'、'400km\u t150317\u 054200', “400km_t150317_054300”、“400km_t150317_054400”] 输出=[x.split'.[-1]用于文件名中的x] 打印输出 这张照片是:

['054000', '054100', '054200', '054300', '054400']
1.拆分文件名 在下划线处拆分文件名_

2.将字符串转换为时间对象 使用time.strpimetime_字符串,%H%M%S

3.追加新的时间到时间数组 定义时间数组并使用时间数组进行追加。追加时间对象

最终代码 导入时间 文件名=['400km_t150317_054000'、'400km_t150317_054100'、'400km_t150317_054200'、'400km_t150317_054300'、'400km_t150317_054400'] 时间数组=[] 对于文件名中的f: 部件=f.分体式 时间字符串=部分[-1] time\u obj=time.STRPIMETIME\u字符串,%H%M%S 时间\数组。追加时间\对象 或者简而言之,作为一个列表

导入时间 文件名=['400km_t150317_054000'、'400km_t150317_054100'、'400km_t150317_054200'、'400km_t150317_054300'、'400km_t150317_054400'] 时间数组=[time.strtimef.split'[-1],%H%M%S,用于文件名中的f] 注:

此答案返回时间列表,而不是时间字符串。 如果必须进行一些额外的处理,那么这种行为可能是可取的。 此答案假设时间格式为%H%M%S,即前两位数字表示小时,后两位数字表示分钟,后两位数字表示秒 编辑:为了回应OP的评论,这里有一个解决方案,可以从文件夹中的所有文件生成文件名数组,并删除.dat或任何其他扩展名

导入操作系统 导入路径库 filenames=[pathlib.Pathf.stem for f in os.listdir'path/to/folder'] 1.拆分文件名 在下划线处拆分文件名_

2.将字符串转换为时间对象 使用time.strpimetime_字符串,%H%M%S

3.追加新的时间到时间数组 定义时间数组并使用时间数组进行追加。追加时间对象

最终代码 导入时间 文件名=['400km_t150317_054000'、'400km_t150317_054100'、'400km_t150317_054200'、'400km_t150317_054300'、'400km_t150317_054400'] 时间数组=[] 对于文件名中的f: 部件=f.分体式 时间字符串=部分[-1] time\u obj=time.STRPIMETIME\u字符串,%H%M%S 时间\数组。追加时间\对象 或者简而言之,作为一个列表

导入时间 文件名=['400km_t150317_054000'、'400km_t150317_054100'、'400km_t150317_054200'、'400km_t150317_054300'、'400km_t150317_054400'] 时间数组=[time.strtimef.split'[-1],%H%M%S,用于文件名中的f] 注:

此答案返回时间列表,而不是时间字符串。 如果必须进行一些额外的处理,那么这种行为可能是可取的。 此答案假设时间格式为%H%M%S,即前两位数字表示小时,后两位数字表示分钟,后两位数字表示秒 编辑:为了回应OP的评论,这里有一个解决方案,可以从文件夹中的所有文件生成文件名数组,并删除.dat或任何其他扩展名

导入操作系统 导入路径库 filenames=[pathlib.Pathf.stem for f in os.listdir'path/to/folder']
非常感谢。有没有办法把我所有的141个文件都放到一个文件名中,就像你在上面列出的前5个文件名一样?或者我需要手动输入它们吗?谢谢!有没有办法把我所有的141个文件都放到一个文件名中,就像你在上面列出的前5个文件名一样?或者我需要手动输入它们吗?谢谢!有没有办法把我所有的141个文件都转换成文件名,就像你在上面列出的前5个文件一样?或者我需要手动输入所有文件吗?您的文件名列表的来源是什么?我不完全确定您的意思,但所有文件都保存在我计算机上的一个文件夹中。@Sjcarlso Use filenames=os.listdir您的文件夹在这里非常感谢!!!什么是os.listdir?我没有定义那个库,所以它无法识别它。谢谢!有没有办法把我所有的141个文件都转换成文件名,就像你在上面列出的前5个文件一样?或者我需要手动输入它们吗?您的文件名列表的来源是什么?我不完全确定您要输入什么
我的意思是,但是所有文件都保存在我计算机上的一个文件夹中。@Sjcarlso Use filenames=os.listdir您的文件夹在这里非常感谢!!!什么是os.listdir?我没有定义该库,因此它无法识别它。非常感谢!当我拥有所有141个文件名以使代码正常工作时,如何删除.dat?我目前使用filenames=os.listdir'Folder'将所有141个文件放入filenames数组,但在运行代码时出现错误,因为它在054000.dat、054100.dat等的末尾仍有.dat。@Sjcarlso,我用一个解决方案更新了我的答案。请看,非常感谢!当我拥有所有141个文件名以使代码正常工作时,如何删除.dat?我目前使用filenames=os.listdir'Folder'将所有141个文件放入filenames数组,但在运行代码时出现错误,因为它在054000.dat、054100.dat等的末尾仍有.dat。@Sjcarlso,我用一个解决方案更新了我的答案。请看。