我有一个带有csv文件的文件夹,其中的名字表示每个男孩在暑假期间每天回家时的日期和时间:例如[root@fedora_container /]# cat /etc/redhat-release
Fedora release 23 (Twenty Three)
[root@centos_container /]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
告诉我他在7月1日17:00回家。所以我的目标是对文件夹中的文件进行排序,然后提取文件名中指示的时间戳。
例如文件夹中的文件:
JSONArray JArray = new JSONObject(stringBuffer.toString()).getJSONArray("friends");
我想根据这些时间戳对它们进行排序:
andrew201507011700.csv
然后,迭代这个已排序的文件列表,将时间戳提取为每个内部数据帧的列,例如,对于文件andrew201509030515.csv
andrew201507011700.csv
andrew201506021930.csv
andrew201508110000.csv
,获取具有一些基本本机python日期时间格式的列:
andrew201506021930.csv
andrew201507011700.csv
andrew201508110000.csv
andrew201509030515.csv
我尝试了以下方法,首先根据数值拆分文件名和排序,然后获取其基本名称的12个最后一个字符:
andrew201506021930.csv
在我看来错了,我没有使用任何日期时间方法对文件进行排序,而且它已经为此行引发了一个错误datetime
2015:06:02:19:30
AttributeError:'list'对象没有属性'endswith'
答案 0 :(得分:1)
试试这个:(如果您不确定所有文件名的格式是否相同,也可以将正则表达式清理一下)
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) )