Как мне заставить мой Python скрипт работать с сетевым файлом? - PullRequest
0 голосов
/ 03 февраля 2020

Я работаю над сценарием для чтения даты создания из исходного файла и изменения дат создания в целевых файлах, чтобы соответствовать ему.

Он считывает даты создания для файлов, хранящихся локально и на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...