520zm

python生成器 获取 目录下文件

# os.walk()和os.list 都是得到所有文件的列表, 如果目录下文件特别多, 上亿了, 我们就需要生成器的方式获取

# 如果只想获取一部分, 也简单(只是多一个参数而已)

# 要求目录下面没有目录, 会递归到子目录下面找文件, (如果有子目录可以在下面代码基础上做修改)

# os.walk()和os.list 都是得到所有文件的列表, 如果目录下文件特别多, 上亿了, 我们就需要生成器的方式获取

# 如果只想获取一部分, 也简单(只是多一个参数而已)

# 要求目录下面没有目录, 会递归到子目录下面找文件, (如果有子目录可以在下面代码基础上做修改)

# os.walk()和os.list 都是得到所有文件的列表, 如果目录下文件特别多, 上亿了, 我们就需要生成器的方式获取

# 如果只想获取一部分, 也简单(只是多一个参数而已)

# 要求目录下面没有目录, 会递归到子目录下面找文件, (如果有子目录可以在下面代码基础上做修改)

 from os import scandir  # 这个函数返回一个包含路径和文件名的迭代器
 import log  # 随便写的
 def gen_file(path, per_file_count):  # 目录和一次想要回去的文件数量
         i = 0
         scandir_it = scandir(path)  # 递归获取目录下文件, 返回迭代器
         while True:
                 try:
                         entry = next(scandir_it)  # 回去下一个
                 except StopIteration:  # 取空之后, 会报错
                         logger.warning(path + "目录下没有文件")
                         break
                 if i == per_file_count: 
                         break
                 i += 1
                 yield entry.path, entry.name

 for path, name in gen_file(path, count):  # 参数是一次要获取数量(int)

 

posted on 2019-01-16 21:54 宋喜阳 阅读(...) 评论(...) 编辑 收藏

相关文章:

  • 2022-02-02
  • 2021-06-01
  • 2022-12-23
  • 2022-03-05
  • 2021-11-09
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-22
  • 2022-12-23
  • 2021-11-23
  • 2022-12-23
相关资源
相似解决方案