I have a python script that downloads a file over FTP using ftplib.
My current download code looks just like the example in the ftp lib docs:
ftp.retrbinary('RETR README', open('README', 'wb').write)
Now I have a requirement that the file downloaded over FTP needs to have the same last modified time as the file on the FTP server itself. Assuming I could parse out the time from ftp.retrlines('list')
, how can I set the modified time on the downloaded file?
I'm on a unix based OS if that matters.
You can manually change the Last Modified Date/Time for a file using a free software called Attribute Changer from http://www.petges.lu/. You will need to remember the modified date/time of your presentation file, modify the file and then use Attribute Changer to set the modified date/time to the previous one.
Using getlastmod() Function: The getlastmod() function is used to get the last modification time of the current page.
Use os.utime
:
import os
os.utime(path_to_file, (access_time, modification_time))
More elaborate example: https://www.tutorialspoint.com/python/os_utime.htm
To edit a file last modified field, use:
os.utime(<file path>, (<access date epoch>, <modification date epoch>))
Example:
os.utime(r'C:\my\file\path.pdf', (1602179630, 1602179630))
💡 - Epoch is the number of seconds that have elapsed since January 1, 1970. see more
If you are looking for a datetime
version:
import datetime
import os
def set_file_last_modified(file_path, dt):
dt_epoch = dt.timestamp()
os.utime(file_path, (dt_epoch, dt_epoch))
# ...
now = datetime.datetime.now()
set_file_last_modified(r'C:\my\file\path.pdf', now)
💡 - For Python versions < 3.3 use
dt_epoch = time.mktime(dt.timetuple())
There are 2 ways to do this. One is the os.utime
example which
is required if you are setting the timestamp on a file that has no
reference stats.
However, if you are copying the files with shutil.copy()
you have a
reference file. Then if you want the permission bits, last access time,
last modification time, and flags also copied, you can use
shutil.copystat()
immediately after the shutil.copy()
.
And then there is shutil.copy2
which is intended to do both at once...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With