[파이썬] 파일 경로와 파일 시스템 감시

In this blog post, we will explore how to work with file paths and monitor the file system using Python. These capabilities are crucial for many applications, such as file management, data processing, and system monitoring.

Working with File Paths

When working with files, it’s important to correctly handle file paths to access and manipulate files. Python’s os.path module provides functions to work with file and directory paths independent of the operating system. Let’s see some examples:

1. Joining file paths

To join multiple components of a file path, you can use the os.path.join() function. It intelligently handles the path separators based on the current operating system:

import os

path = os.path.join('/my', 'folder', 'file.txt')
print(path)
# Output: /my/folder/file.txt

2. Splitting file paths

To split a file path into its individual components, you can use the os.path.split() function. It separates the directory and the filename:

import os

path = '/my/folder/file.txt'
directory, filename = os.path.split(path)
print(directory)
# Output: /my/folder

print(filename)
# Output: file.txt

3. Getting the file extension

To extract the file extension from a given file path, you can use the os.path.splitext() function:

import os

path = '/my/folder/file.txt'
directory, extension = os.path.splitext(path)
print(extension)
# Output: .txt

Monitoring the File System

In many applications, it is necessary to monitor the file system for changes, such as new files, modifications, or deletions. Python provides a convenient way to achieve this using the watchdog library. Let’s see an example of how to use it:

1. Installing the watchdog library

First, we need to install the watchdog library. Open your terminal and run the following command:

pip install watchdog

2. Writing a file system event handler

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class MyEventHandler(FileSystemEventHandler):
    def on_any_event(self, event):
        if event.is_directory:
            return
        elif event.event_type == 'created':
            print(f"File created: {event.src_path}")
        elif event.event_type == 'modified':
            print(f"File modified: {event.src_path}")
        elif event.event_type == 'deleted':
            print(f"File deleted: {event.src_path}")

# Create an observer and set the event handler
observer = Observer()
observer.schedule(MyEventHandler(), path='/my/folder', recursive=True)

# Start the observer
observer.start()

# Keep the script running in an infinite loop
try:
    while True:
        pass
except KeyboardInterrupt:
    observer.stop()

# Join the observer thread
observer.join()

3. Running the file system monitor

Save the above code in a Python script, for example, file_system_monitor.py. Replace /my/folder with the path to the directory you want to monitor. Open the terminal in the same directory as the script and run the following command:

python file_system_monitor.py

Now, any changes made in the specified directory will be detected and printed to the console.

Conclusion

Python provides powerful capabilities to work with file paths and monitor the file system. With the os.path module, you can handle file paths in a cross-platform way. Additionally, the watchdog library allows you to monitor the file system for changes, which is useful for various application scenarios.