在 python 中排序文件和解析文件名
sort files and parse filenames in python
我有一个 csv 文件的文件夹,名称表示一个男孩在暑假期间每天回家的日期和时间:例如 andrew201507011700.csv
告诉我他在七月的第一个 17:00。所以我的目标是对文件夹中的文件进行排序,然后提取文件名中指示的时间戳。
例如文件夹中的文件:
andrew201509030515.csv
andrew201507011700.csv
andrew201506021930.csv
andrew201508110000.csv
我想根据这些时间戳对它们进行排序:
andrew201506021930.csv
andrew201507011700.csv
andrew201508110000.csv
andrew201509030515.csv
然后,迭代这个排序的文件列表,提取时间戳作为每个内部数据帧的列,例如对于文件 andrew201506021930.csv
获取具有一些基本原生 python 日期时间格式的列:
datetime
2015:06:02:19:30
我尝试了下面的方法,首先将文件名拆分并根据数值排序,然后得到其基本名称的最后12个字符:
path_sort=sorted(os.listdir(path),key=lambda x: int(x.split('w')[0]))
for i in path_sort:
fi=os.path.join(path_sort, i)
return os.path.basename(fi)[-12:]
在我看来这是错误的,我没有使用任何日期时间方法来对文件进行排序,而且它已经为这一行抛出了一个错误 fi=os.path.join(path_sort, i)
AttributeError: 'list' object has no attribute 'endswith'
试试这个:(如果您不确定所有文件名的格式是否相同,可以稍微清理正则表达式)
from os import listdir
from os.path import isfile, join
import re
def extract_number(string):
r = re.compile(r'(\d+)')
return int(r.findall(string)[0])
MyDir = 'exampls/'
onlyfiles = [f for f in listdir(MyDir) if isfile(join(MyDir, f))]
sortedFiles = sorted(onlyfiles ,key=lambda x: extract_number(x) )
我有一个 csv 文件的文件夹,名称表示一个男孩在暑假期间每天回家的日期和时间:例如 andrew201507011700.csv
告诉我他在七月的第一个 17:00。所以我的目标是对文件夹中的文件进行排序,然后提取文件名中指示的时间戳。
例如文件夹中的文件:
andrew201509030515.csv
andrew201507011700.csv
andrew201506021930.csv
andrew201508110000.csv
我想根据这些时间戳对它们进行排序:
andrew201506021930.csv
andrew201507011700.csv
andrew201508110000.csv
andrew201509030515.csv
然后,迭代这个排序的文件列表,提取时间戳作为每个内部数据帧的列,例如对于文件 andrew201506021930.csv
获取具有一些基本原生 python 日期时间格式的列:
datetime
2015:06:02:19:30
我尝试了下面的方法,首先将文件名拆分并根据数值排序,然后得到其基本名称的最后12个字符:
path_sort=sorted(os.listdir(path),key=lambda x: int(x.split('w')[0]))
for i in path_sort:
fi=os.path.join(path_sort, i)
return os.path.basename(fi)[-12:]
在我看来这是错误的,我没有使用任何日期时间方法来对文件进行排序,而且它已经为这一行抛出了一个错误 fi=os.path.join(path_sort, i)
AttributeError: 'list' object has no attribute 'endswith'
试试这个:(如果您不确定所有文件名的格式是否相同,可以稍微清理正则表达式)
from os import listdir
from os.path import isfile, join
import re
def extract_number(string):
r = re.compile(r'(\d+)')
return int(r.findall(string)[0])
MyDir = 'exampls/'
onlyfiles = [f for f in listdir(MyDir) if isfile(join(MyDir, f))]
sortedFiles = sorted(onlyfiles ,key=lambda x: extract_number(x) )