English | 简体中文
Everything Tool
is a Python SDK designed to interface with the Everything
file search software for Windows.
This project uses IPC to communicate with Everything
. You need to download the full version of Everything
software. The lite version does not support IPC. Click here to download the full version. Ensure that Everything
is running in the background.
Here is a basic example demonstrating how to use Everything Tool
to search for files:
import everything_tool as et
def search():
try:
with et.Client() as client:
print(f'Everything version: {client.version()}')
flags = et.REQUEST_FILE_NAME | et.REQUEST_SIZE
sort = et.SORT_SIZE_DESCENDING
limit = 2
for file in client.search_ext(keywords='py', ext=['exe', 'msi'], flags=flags, sort=sort, limit=limit):
print(file)
except (AttributeError, et.Error) as e:
print('Error:', e)
if __name__ == '__main__':
search()
Everything Tool
supports all Everything
search syntax. Refer to Everything
’s help documentation for detailed search syntax. Below are some common features:
- Operators
- Wildcards
- Macros
- Modifiers
- Functions
- Function syntax
- Size syntax
- Size constants
- Date syntax
- Date constants
- Property constants
Everything Tool
provides a series of search functions. Here is the definition and description of the search
function and its derivatives:
def search(
self,
keywords: str,
math_path: bool = False,
math_case: bool = False,
whole_word: bool = False,
regex: bool = False,
offset: int = 0,
limit: int = -1,
flags: [int, Iterable[int]] = DEFAULT_FLAGS,
sort: int = SORT_NAME_ASCENDING
) -> Iterable[Dict]:
"""
Search files using Everything
:param keywords: Search keyword, supports all Everything search syntax
:param math_path: Match path
:param math_case: Case sensitive
:param whole_word: Whole word match
:param regex: Use regular expression
:param offset: Offset
:param limit: Maximum number, <0 means search all
:param flags: Query fields
:param sort: Sort order
:return: Generator of record dictionaries
"""
pass
def search_in_located(self, path, keywords='', **kwargs):
"""Search files in a specific path"""
return self.search(f'{path} {keywords}', **kwargs)
def search_folder(self, keywords='', **kwargs):
"""Search folders"""
return self.search(f'folder: {keywords}', **kwargs)
def search_ext(self, ext, keywords='', **kwargs):
"""Search by file extension"""
return self.search(f'ext:{ext} {keywords}', **kwargs)
def search_audio(self, keywords='', **kwargs):
"""Search audio files"""
return self.search_ext(f'{self.audio_ext} {keywords}', **kwargs)
def search_compressed(self, keywords='', **kwargs):
"""Search compressed files"""
return self.search_ext(f'{self.compressed_ext} {keywords}', **kwargs)
def search_doc(self, keywords='', **kwargs):
"""Search documents"""
return self.search_ext(f'{self.doc_ext} {keywords}', **kwargs)
def search_exe(self, keywords='', **kwargs):
"""Search executable files"""
return self.search_ext(f'{self.exe_ext} {keywords}', **kwargs)
def search_pic(self, keywords='', **kwargs):
"""Search image files"""
return self.search_ext(f'{self.pic_ext} {keywords}', **kwargs)
def search_video(self, keywords='', **kwargs):
"""Search video files"""
return self.search_ext(f'{self.video_ext} {keywords}', **kwargs)
Everything Tool
supports all query fields from Everything
. Here are some common fields:
REQUEST_FILE_NAME = 0x00000001 # File name
REQUEST_PATH = 0x00000002 # Path without file name
REQUEST_FULL_PATH_AND_FILE_NAME = 0x00000004 # Full path with file name
REQUEST_EXTENSION = 0x00000008 # Extension
REQUEST_SIZE = 0x00000010 # Size (byte)
REQUEST_DATE_CREATED = 0x00000020 # Creation date
REQUEST_DATE_MODIFIED = 0x00000040 # Modified date
REQUEST_DATE_ACCESSED = 0x00000080 # Accessed date
REQUEST_ATTRIBUTES = 0x00000100 # Attributes
REQUEST_FILE_LIST_FILE_NAME = 0x00000200 # File list name
REQUEST_RUN_COUNT = 0x00000400 # Run count
REQUEST_DATE_RUN = 0x00000800 # Last run date
REQUEST_DATE_RECENTLY_CHANGED = 0x00001000 # Recently changed date
REQUEST_HIGHLIGHTED_FILE_NAME = 0x00002000 # Highlighted file name
REQUEST_HIGHLIGHTED_PATH = 0x00004000 # Highlighted path without file name
REQUEST_HIGHLIGHTED_FULL_PATH_AND_FILE_NAME = 0x00008000 # Highlighted full path with file name
Default query fields:
DEFAULT_FLAGS = (
REQUEST_FULL_PATH_AND_FILE_NAME
| REQUEST_SIZE
| REQUEST_DATE_MODIFIED
)
Here are the supported file attributes:
# See more: https://learn.microsoft.com/en-us/windows/win32/fileio/file-attribute-constants
FILE_ATTRIBUTE_READONLY = 0x00000001
FILE_ATTRIBUTE_HIDDEN = 0x00000002
FILE_ATTRIBUTE_SYSTEM = 0x00000004
FILE_ATTRIBUTE_DIRECTORY = 0x00000010
FILE_ATTRIBUTE_ARCHIVE = 0x00000020
FILE_ATTRIBUTE_DEVICE = 0x00000040
FILE_ATTRIBUTE_NORMAL = 0x00000080
FILE_ATTRIBUTE_TEMPORARY = 0x00000100
FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200
FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400
FILE_ATTRIBUTE_COMPRESSED = 0x00000800
FILE_ATTRIBUTE_OFFLINE = 0x00001000
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000
FILE_ATTRIBUTE_ENCRYPTED = 0x00004000
Here are the supported sort orders:
SORT_NAME_ASCENDING = 1 # Default
SORT_NAME_DESCENDING = 2
SORT_PATH_ASCENDING = 3
SORT_PATH_DESCENDING = 4
SORT_SIZE_ASCENDING = 5
SORT_SIZE_DESCENDING = 6
SORT_EXTENSION_ASCENDING = 7
SORT_EXTENSION_DESCENDING = 8
SORT_TYPE_NAME_ASCENDING = 9
SORT_TYPE_NAME_DESCENDING = 10
SORT_DATE_CREATED_ASCENDING = 11
SORT_DATE_CREATED_DESCENDING = 12
SORT_DATE_MODIFIED_ASCENDING = 13
SORT_DATE_MODIFIED_DESCENDING = 14
SORT_ATTRIBUTES_ASCENDING = 15
SORT_ATTRIBUTES_DESCENDING = 16
SORT_FILE_LIST_FILENAME_ASCENDING = 17
SORT_FILE_LIST_FILENAME_DESCENDING = 18
SORT_RUN_COUNT_ASCENDING = 19
SORT_RUN_COUNT_DESCENDING = 20
SORT_DATE_RECENTLY_CHANGED_ASCENDING = 21
SORT_DATE_RECENTLY_CHANGED_DESCENDING = 22
SORT_DATE_ACCESSED_ASCENDING = 23
SORT_DATE_ACCESSED_DESCENDING = 24
SORT_DATE_RUN_ASCENDING = 25
SORT_DATE_RUN_DESCENDING = 26