有没有一种方法可以扫描目录以查看有多少种特定类型的文件?

时间:2020-04-17 12:42:21

标签: python python-3.x pandas csv operating-system

因此,如果我有一个类似下面的目录,则可以扫描名称中带有特定代码的文件数。例如,如果我希望从17042020开始的文件数在下面的目录中为6?

1704202001-01.csv
1704202001-02.csv
1704202002-01.csv
1704202002-02.csv
1704202003-01.csv
1704202003-02.csv
001.png
002.pdf
003.docx
004.jpg

4 个答案:

答案 0 :(得分:1)

您可以使用pathlib模块或仅使用简单的glob

props.props.data[0].map

答案 1 :(得分:0)

使用os获取文件列表:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: monitoring-claim
  namespace: monitoring
spec:
  storageClassName: manual
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
  selector:
    matchLabels:
      usage: monitoring

答案 2 :(得分:0)

使用现在最适合路径的pathlib模块

import pathlib
from typing import List

"""!
@brief Finds files with the given unique code in name in directory
@param[in] directory pathlib.Path directory of searching
@param[in] unique_code str code in the filename
@return List[pathlib.Path] list of filepaths with unique code in name
"""
def find_files(directory:pathlib.Path, unique_code:str) -> List[pathlib.Path]:
    result:List[pathlib.path] = list()
    for filepath in directory.glob('*'):
        if filepath.is_file() and unique_code in filepath.name:
            result.append(filepath)
    return result

# Set Your directory!
directory:pathlib.Path = pathlib.Path('your/dir')

unique_code:str = '17042020'

found_files:List[pathlib.Path] = find_files(directory, unique_code)

print(f"Found files with unique code [{unique_code}]: {len(found_files)}")
for filepath in found_files:
        print(f"    {filepath.resolve()}")

答案 3 :(得分:0)

在Unix / Linux / macOS(以及您的OS)上,您可以在shell中进行多种操作

假设您位于指定的文件夹中,则可以执行以下操作:

ls | grep "1704202001" | wc | awk '{print $1}'

ls将列出您的文件夹文件/子文件夹 grep将仅使用包含模式的行过滤搜索 wc将计算搜索的行数/字符数 awk将被告知仅打印第一列(wc会回答3个数字,只有第一个数字对我们很有趣)

如果您想进行递归搜索,则可以使用find

find . -name "*1704202001*" | wc | awk '{print $1}'

find将在.和RegExp模式的所有子文件夹中进行搜索(因此我们使用通配符*在完整的文件名中匹配该模式)。

最后但不是列表,您可能要计算包含模式的文件数量(不是名称,而是文件本身)。您可以使用grep

grep -R "1704202001" | wc | awk '{print $1}' 

您既要使用Python,又要使用操作系统帮助,这个答案是针对最后一个问题的:)

希望对您有些帮助。