python 在路径中查询出包含以core开头,.dmp结尾的文件,并输出该文件的大小
时间: 2024-02-03 09:13:31 浏览: 127
你可以使用`os`模块和正则表达式来完成这个任务。以下是一个示例代码:
```python
import os
import re
folder_path = "/path/to/folder"
# 用正则表达式匹配文件名
pattern = r"^core.*\.dmp$"
regex = re.compile(pattern)
# 遍历目录下的所有文件
for root, dirs, files in os.walk(folder_path):
for file in files:
# 如果文件名匹配正则表达式
if regex.match(file):
file_path = os.path.join(root, file)
# 输出文件大小
file_size = os.path.getsize(file_path)
print(f"{file_path} size: {file_size} bytes")
```
其中,`os.walk`函数可以递归遍历指定目录下的所有子目录和文件,`os.path.join`函数用于拼接文件路径。`os.path.getsize`函数可以获取文件大小。
相关问题
pyinotify,在指定路径下监视包含以core开头,.dmp结尾的文件,并输出该文件的大小
可以使用pyinotify实现这个功能。以下是一个示例代码:
```python
import os
import pyinotify
# 定义监视器事件
class EventHandler(pyinotify.ProcessEvent):
def process_IN_CLOSE_WRITE(self, event):
if event.pathname.startswith('/path/to/dir/core') and event.pathname.endswith('.dmp'):
size = os.path.getsize(event.pathname)
print(f"{event.pathname}: {size} bytes")
# 创建监视器对象
wm = pyinotify.WatchManager()
mask = pyinotify.IN_CLOSE_WRITE
notifier = pyinotify.Notifier(wm, EventHandler())
# 添加监视路径
wdd = wm.add_watch('/path/to/dir', mask, rec=True)
# 运行监视器
notifier.loop()
```
在上面的代码中,`EventHandler`类继承了`pyinotify.ProcessEvent`类,并重写了`process_IN_CLOSE_WRITE`方法。当有文件写入完成时,如果该文件的路径以`/path/to/dir/core`开头,以`.dmp`结尾,则输出该文件的大小。
然后创建`WatchManager`对象和`Notifier`对象,将其关联到`EventHandler`对象上,并添加监视路径。最后,运行监视器的循环。
注意,`pyinotify`需要在Linux系统上运行。如果在Windows系统上运行,则需要使用类似`watchdog`的库来监视文件系统事件。
pyinotify,在指定路径下监视包含以core开头,.dmp结尾的文件(用正则表达式),并输出该文件的大小
可以使用pyinotify库来实现在指定路径下监视文件变化的功能。下面是一个示例代码,可以监视包含以core开头,.dmp结尾的文件,并输出该文件的大小:
```python
import pyinotify
import re
import os
class EventHandler(pyinotify.ProcessEvent):
def process_IN_CLOSE_WRITE(self, event):
if re.match(r'^core.*\.dmp$', event.name):
file_path = os.path.join(event.path, event.name)
file_size = os.path.getsize(file_path)
print(f"{file_path} size: {file_size}")
def watch_dir(path):
wm = pyinotify.WatchManager()
mask = pyinotify.IN_CLOSE_WRITE
handler = EventHandler()
notifier = pyinotify.Notifier(wm, handler)
wm.add_watch(path, mask, rec=True)
notifier.loop()
if __name__ == '__main__':
watch_dir('/path/to/watch')
```
这个代码中,我们先定义了一个 `EventHandler` 类,它继承了 `pyinotify.ProcessEvent` 类,并实现了 `process_IN_CLOSE_WRITE` 方法。当被监视的目录中有文件发生写入并关闭时,`pyinotify` 会调用这个方法。我们在这个方法中使用正则表达式匹配文件名,如果文件名符合要求,就获取文件的路径和大小,然后输出到控制台。
在 `watch_dir` 函数中,我们创建了一个 `WatchManager` 对象和一个 `Notifier` 对象,并将它们绑定在一起。然后调用 `WatchManager` 对象的 `add_watch` 方法来添加要监视的目录和文件类型。最后调用 `Notifier` 对象的 `loop` 方法开始循环监视目录。
阅读全文