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