Python处理目录中的一系列编号(日期)文件

Python处理目录中的一系列编号(日期)文件,python,file-io,glob,python-2.x,Python,File Io,Glob,Python 2.x,我试图使用Python2.7在目录中查找一系列特定文件。 我在一个名为AB_yyyyjjhhmmss_001.txt的目录中有很多文件,其中y是年,j是朱利安日期,h是小时等等。每次都对应于获取某些数据的时间,而不一定是创建或操作文件的时间。我喜欢选择一个时间范围,比如从20133051000到2013306123000,并对其进行处理 我有点像 import glob def get_time (start_time = None, end_time = None): if sta

我试图使用Python2.7在目录中查找一系列特定文件。 我在一个名为AB_yyyyjjhhmmss_001.txt的目录中有很多文件,其中y是年,j是朱利安日期,h是小时等等。每次都对应于获取某些数据的时间,而不一定是创建或操作文件的时间。我喜欢选择一个时间范围,比如从20133051000到2013306123000,并对其进行处理

我有点像

import glob

def get_time (start_time = None, end_time = None):

    if start_time == None:
        start_time = input("start: ")
    if end_time == None:
        end_time = input("end: ")

    duration = str(start_time) + "-" + str(end_time)

    listing = glob.glob("*_[" + duration + "]_*")
我了解到,
[]
只能匹配单个数字。所以我完全偏离了轨道。我还尝试了
{start\u time..end\u time}
组合,但没有成功

我可以试试

import re
import os
import datetime

def filename_to_datetime(filename):
    filedate = re.match(r'.*(\d{13}).*', filename)
    if filedate:
        return datetime.datetime.strptime(re.match(filedate.group(1), '%Y%j%H%M%S')
    else:
        raise ValueError("File has wrong format!")

def get_time(start_time, end_time):
    return [filename for filename in os.listdir('.') if
            start_time < filename_to_datetime(filename) < end_time]
重新导入
导入操作系统
导入日期时间
def filename_to_datetime(文件名):
filedate=re.match(r'.*(\d{13})。*',文件名)
如果文件日期:
return datetime.datetime.strtime(重新匹配(filedate.group(1),“%Y%j%H%M%S”)
其他:
raise VALUERROR(“文件格式错误!”)
def获取时间(开始时间、结束时间):
返回[文件名作为os.listdir('.')中的文件名,如果
开始时间
我可以试试

import re
import os
import datetime

def filename_to_datetime(filename):
    filedate = re.match(r'.*(\d{13}).*', filename)
    if filedate:
        return datetime.datetime.strptime(re.match(filedate.group(1), '%Y%j%H%M%S')
    else:
        raise ValueError("File has wrong format!")

def get_time(start_time, end_time):
    return [filename for filename in os.listdir('.') if
            start_time < filename_to_datetime(filename) < end_time]
重新导入
导入操作系统
导入日期时间
def filename_to_datetime(文件名):
filedate=re.match(r'.*(\d{13})。*',文件名)
如果文件日期:
return datetime.datetime.strtime(重新匹配(filedate.group(1),“%Y%j%H%M%S”)
其他:
raise VALUERROR(“文件格式错误!”)
def获取时间(开始时间、结束时间):
返回[文件名作为os.listdir('.')中的文件名,如果
开始时间
如果所有文件都具有相同的结构,您只需编写:

import os
import re
start = sys.argv[1]
end = sys.argv[2]
for filename in os.listdir('test'):
    if start <= filename.split('_')[1] <= end:
        print "Process %s" % filename

如果所有文件都具有相同的结构,您只需编写:

import os
import re
start = sys.argv[1]
end = sys.argv[2]
for filename in os.listdir('test'):
    if start <= filename.split('_')[1] <= end:
        print "Process %s" % filename

谢谢你这么快回复!你在我发帖后的10分钟内发布了这个答案!太棒了!!我一定会尝试re和datetime。这看起来非常有用。谢谢你这么快回复!你在我发帖后的10分钟内发布了这个答案!太棒了!!我一定会尝试re和datetime。这看起来非常有用。谢谢你,damien。这非常酷l、 事实上,文件名都在同一个结构中。拆分肯定会很有用。我发现像start这样的算法很有趣,如果您觉得这很有用,您可以随意升级投票和/或接受:)谢谢你,达米恩。这很酷。事实上,文件名都在同一个结构中。拆分肯定会很有用。我发现像start这样的算术很有趣,如果你觉得有用,可以随意向上投票和/或接受:)