Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python搜索多个目录并读取选择文件_Python_Glob_Text Parsing - Fatal编程技术网

Python搜索多个目录并读取选择文件

Python搜索多个目录并读取选择文件,python,glob,text-parsing,Python,Glob,Text Parsing,我正在寻找一些使用Python对两个不同目录中的一组文件执行操作的帮助 我正试图: 搜索两个不同的目录 查找最后修改的15个文件(比较两个目录中的文件) 逐行读取所有15个最近修改的文件 我可以使用glob完成对一个文件目录的读取。但是,我不能指定多个目录。我还有别的方法可以做到这一点吗 下面是我的代码,它可以抓取dir1中最新的15个文件,而不是dir2 dir1 = glob.iglob("/dir1/data_log.*") dir2 = glob.iglob("/dir2/message

我正在寻找一些使用Python对两个不同目录中的一组文件执行操作的帮助

我正试图:

  • 搜索两个不同的目录

  • 查找最后修改的15个文件(比较两个目录中的文件)

  • 逐行读取所有15个最近修改的文件

  • 我可以使用glob完成对一个文件目录的读取。但是,我不能指定多个目录。我还有别的方法可以做到这一点吗

    下面是我的代码,它可以抓取dir1中最新的15个文件,而不是dir2

    dir1 = glob.iglob("/dir1/data_log.*")
    dir2 = glob.iglob("/dir2/message_log.*")
    
    latest=heapq.nlargest(10, dir1, key=os.path.getmtime)
    for fn in latest:
        with open(fn) as f:
            for line in f:
                print(line)
    

    我不确定这是您想要的,但是如果您使用
    glob.glob
    而不是
    glob.iglob
    ,您可以这样做

    dir1 = glob.glob("/dir1/data_log.*")
    dir2 = glob.glob("/dir2/message_log.*")
    
    latest=heapq.nlargest(10, dir1+dir2, key=os.path.getmtime)
    
    实际上,如果您不喜欢使用列表(
    glob.glob
    )而不是生成器(
    glob.iglob
    ),您可以这样做

    from itertools import chain
    
    dir1 = glob.iglob("/dir1/data_log.*")
    dir2 = glob.iglob("/dir2/message_log.*")
    
    latest=heapq.nlargest(10, chain(dir1, dir2), key=os.path.getmtime)
    

    我不确定这是您想要的,但是如果您使用
    glob.glob
    而不是
    glob.iglob
    ,您可以这样做

    dir1 = glob.glob("/dir1/data_log.*")
    dir2 = glob.glob("/dir2/message_log.*")
    
    latest=heapq.nlargest(10, dir1+dir2, key=os.path.getmtime)
    
    实际上,如果您不喜欢使用列表(
    glob.glob
    )而不是生成器(
    glob.iglob
    ),您可以这样做

    from itertools import chain
    
    dir1 = glob.iglob("/dir1/data_log.*")
    dir2 = glob.iglob("/dir2/message_log.*")
    
    latest=heapq.nlargest(10, chain(dir1, dir2), key=os.path.getmtime)