Я работаю над сценарием для чтения даты создания из исходного файла и изменения дат создания в целевых файлах, чтобы соответствовать ему.
Он считывает даты создания для файлов, хранящихся локально и на NAS. .
Изменяет даты создания файлов, хранящихся локально.
Однако я не могу заставить его изменить даты создания файлов, хранящихся на NAS. Я не получаю сообщение об ошибке, оно просто не меняет дату создания.
Есть идеи, как мне заставить это работать? Или мне придется скопировать файлы в локальную папку, внести изменения, а затем скопировать их обратно?
creation_dates.py
# Get Creation Date of source file
def get_creeation_date(fn):
return time.ctime(os.path.getctime(fn))
# Convert datetime to integer (for conversion)
def convert_to_integer(dt_time_str):
dt_time = datetime.strptime(dt_time_str, "%a %b %d %H:%M:%S %Y")
return int(datetime.timestamp(dt_time))
# Change the creation date of the destination files based on the source file
# Working with module from this post: >>https://stackoverflow.com/q/47839248/11792868
def changeFileCreationTime(fname, newtime_int):
wintime = pywintypes.Time(newtime_int)
winfile = win32file.CreateFile(
fname,
win32con.GENERIC_WRITE,
win32con.FILE_SHARE_READ
| win32con.FILE_SHARE_WRITE
| win32con.FILE_SHARE_DELETE,
None,
win32con.OPEN_EXISTING,
win32con.FILE_ATTRIBUTE_NORMAL,
None,
)
win32file.SetFileTime(winfile, wintime, None, None)
winfile.close()
def main(fn_src, fn_dest):
changeFileCreationTime(fn_dest, convert_to_integer(get_creeation_date(fn_src)))
if __name__ == "__main__":
file_src = r"\\path\to\source\file 1.mp4" # Located in NAS folder
file_src_dir, file_src_name_ext = os.path.split(file_src)
file_src_name, file_src_ext = os.path.splitext(file_src_name_ext)
file_dest_jpg_1 = re.sub(r"(\s\d$|$)", " 2.jpg", file_src_name, 1) # file to be created to local folder
file_dest_jpg_2 = "\\\\path\\to\\source\\" + file_src_name + "2.jpg" # file to be created to NAS folder
# Also tried r"\\path\to\source\" + file_src_name + "2.jpg"
if os.path.exists(file_dest_jpg_1) == False:
with open(file_dest_jpg_1, "w"):
pass
if os.path.exists(file_dest_jpg_2) == False:
with open(file_dest_jpg_2, "w"):
pass
main(file_src, file_dest_jpg_1) # This works
main(file_src, file_dest_jpg_2) # This does not work