Understanding how to get file modification and creation datetime in Python is an important skill for any developer. Knowing how to work with file metadata is critical for building applications that can effectively manage and organize files.
In this article, we will explore two methods for getting file modification and creation datetime in Python: using the os.path module and using the pathlib module.
Using os.path Module
The os.path module is a powerful tool for working with file paths and metadata.
The module provides several functions for accessing file metadata, including getmtime() and getctime(). These functions return the modification and creation datetime of a file, respectively.
Getting modification time using getmtime()
The getmtime() function takes a file path as its argument and returns the time of the last modification of the file in seconds since the epoch. The epoch is a fixed point in time that serves as a reference point for measuring time.
Here’s an example of how to use the getmtime() function:
import os.path
import datetime
file_path = '/path/to/file.txt'
modification_time = os.path.getmtime(file_path)
print(modification_time)
This will output the modification time of the file in seconds since the epoch. To convert this value to a human-readable datetime object, we can use the datetime.fromtimestamp() method.
Converting modification time to datetime object using fromtimestamp()
The fromtimestamp() method of the datetime module creates a datetime object from an integer representing a timestamp. We can use this method to convert the modification time in seconds since the epoch to a datetime object.
Here’s an example:
import os.path
import datetime
file_path = '/path/to/file.txt'
modification_time = os.path.getmtime(file_path)
modification_datetime = datetime.datetime.fromtimestamp(modification_time)
print(modification_datetime)
This will output the modification time of the file in a human-readable format.
Getting creation time using getctime()
The getctime() function returns the creation time of a file in seconds since the epoch. Here’s an example of how to use it:
import os.path
import datetime
file_path = '/path/to/file.txt'
creation_time = os.path.getctime(file_path)
print(creation_time)
This will output the creation time of the file in seconds since the epoch. To convert this value to a human-readable datetime object, we can use the datetime.fromtimestamp() method, just as we did with the modification time.
Using pathlib Module
The pathlib module is a modern alternative to the os.path module for working with file paths. It provides an object-oriented interface for working with paths and file metadata.
One advantage of using pathlib is that it allows for more natural and readable code.
Path() object
The Path() function creates a Path object representing a file or directory path. We can use Path objects to access file metadata using the stat() method.
Here’s an example of how to create a Path object:
import pathlib
file_path = pathlib.Path('/path/to/file.txt')
print(file_path)
This will output the Path object representing the file path.
stat() method
The stat() method returns a named tuple with several file metadata values, including the modification and creation datetime values. Here’s an example of how to use the stat() method:
import pathlib
import datetime
file_path = pathlib.Path('/path/to/file.txt')
file_stat = file_path.stat()
modification_time = file_stat.st_mtime
creation_time = file_stat.st_ctime
modification_datetime = datetime.datetime.fromtimestamp(modification_time)
creation_datetime = datetime.datetime.fromtimestamp(creation_time)
print('Modification time: ', modification_datetime)
print('Creation time: ', creation_datetime)
This will output the modification and creation datetime values in human-readable format.
Conclusion
In conclusion, working with file metadata is an important part of building applications that can manage files effectively. In this article, we explored two methods for getting file modification and creation datetime in Python: using the os.path module and using the pathlib module.
Both methods have their advantages, and choosing the right one depends on the specific use case. Hopefully, this article has provided you with a better understanding of how to work with file metadata in Python.
Getting File Creation Datetime on Mac and Unix Systems
On Mac and Unix systems, we cannot use the st_ctime attribute of os.stat() to get the creation datetime because this attribute stores the “inode change time”, which is the time when the file metadata was last changed. Instead, we can use the st_birthtime attribute, which stores the exact time when the file was first created.
Here’s an example of how to use the os.stat() function to get file creation datetime on Mac and Unix systems:
import os
import datetime
filename = '/path/to/file.txt'
file_stat = os.stat(filename)
creation_time = file_stat.st_birthtime
creation_datetime = datetime.datetime.fromtimestamp(creation_time)
print('File creation datetime:', creation_datetime)
This will output the creation datetime of the file in a human-readable format.
Using pathlib Module to Get File Modification and Creation Datetime
The pathlib module provides a more object-oriented and Pythonic way of working with paths and file metadata. We can use the Path() function to create a Path object and the stat() method to get the file metadata as a named tuple.
Here’s an example of how to use the pathlib module to get both modification and creation datetime on all systems:
import pathlib
import datetime
filename = '/path/to/file.txt'
file_path = pathlib.Path(filename)
file_stat = file_path.stat()
modification_time = file_stat.st_mtime
creation_time = file_stat.st_ctime
modification_datetime = datetime.datetime.fromtimestamp(modification_time)
creation_datetime = datetime.datetime.fromtimestamp(creation_time)
print('File modification datetime:', modification_datetime)
print('File creation datetime:', creation_datetime)
This will output the modification and creation datetime values of the file in human-readable format. Note that on Windows systems, the st_ctime attribute of the file_stat object stores the creation datetime of the file.
However, on Mac and Unix systems, the st_ctime attribute stores the inode change time, as mentioned earlier. Therefore, we need to use the st_birthtime attribute instead to get the creation datetime on these systems.
Conclusion
In this section, we explored how to get file creation datetime on Mac and Unix systems using the os.stat() function and how to use the pathlib module to get both modification and creation datetime on all systems. These methods are essential for managing files effectively in Python and are especially useful for building applications that rely heavily on file metadata.
By understanding how to work with file metadata, you can take your Python programming skills to the next level and create even more powerful and efficient applications.
Takeaway
File metadata is an essential aspect of programming applications that handle multiple files. Learning how to access their modification and creation datetime allows for better organization and management of files, making Python development more efficient.