[파이썬] shutil `shutil.ignore_patterns()`: 특정 패턴 무시하기

When working with file manipulation in Python, the shutil module provides a convenient way to copy, move, or delete files and directories. One useful function in this module is shutil.ignore_patterns(), which allows you to ignore specific file patterns or directories when performing these file operations.

What is shutil.ignore_patterns()?

shutil.ignore_patterns() is a function that returns a callable object that can be used as the ignore parameter in various shutil functions such as shutil.copytree(), shutil.rmtree(), etc. This function takes a variable number of arguments which can be file patterns or directories to be ignored during file operations.

Ignoring specific file patterns

To use shutil.ignore_patterns() for ignoring specific file patterns, you pass the patterns as arguments to the function. These patterns can include wildcards such as * or ?. For example, if you want to copy a directory while ignoring all .txt files, you can use the following code:

import shutil

shutil.copytree('source_dir', 'destination_dir', ignore=shutil.ignore_patterns('*.txt'))

In this example, any file with the extension .txt in the source_dir will be ignored during the copy operation.

Ignoring specific directories

Similarly, you can also ignore specific directories by passing their names as arguments to shutil.ignore_patterns(). Let’s say you want to delete a directory while leaving out a specific subdirectory named logs. You can achieve this by using the following code:

import shutil

shutil.rmtree('directory_to_delete', ignore=shutil.ignore_patterns('logs'))

With this code, the logs subdirectory will be preserved while deleting the rest of the files and directories inside directory_to_delete.

Ignoring multiple patterns or directories

You can also ignore multiple file patterns or directories by passing them as separate arguments to shutil.ignore_patterns(). For example, if you want to copy a directory while ignoring both .txt files and a directory named temp, you can use the following code:

import shutil

shutil.copytree('source_dir', 'destination_dir', ignore=shutil.ignore_patterns('*.txt', 'temp'))

Now, any file with the extension .txt and the temp directory in the source_dir will be ignored during the copy operation.

Conclusion

The shutil.ignore_patterns() function in Python’s shutil module provides a powerful way to ignore specific file patterns or directories during file operations. By using this function as the ignore parameter in shutil functions, you can easily manipulate files and directories while ignoring the ones that you don’t want to include.