os.path.exists дает разные результаты в одном и том же файле - PullRequest
0 голосов
/ 24 сентября 2019

Вот код для ссылки:

    import shutil
    import datetime
    import os.path
    from tkinter import Tk
    from tkinter.filedialog import askopenfilename
    from tkinter.filedialog import askdirectory


    if not os.path.exists('copy_path.txt'):
        root = Tk()
        root.withdraw()

        file_to_backup = askopenfilename(title=' ')
        backup_directory = askdirectory(title=' ')
        print(file_to_backup)
        print(os.path.exists(file_to_backup))

    if os.path.exists(file_to_backup):
        if os.path.exists(backup_directory):
            copy_path_file = open('copy_path.txt', 'w+')
            copy_path_file.write(file_to_backup + '\n' + backup_directory)
            copy_path_file.close()

    if os.path.exists('copy_path.txt'): 
        copy_path_file = open('copy_path.txt', 'r')
        paths = copy_path_file.readlines()
        #paths[0] = paths[0].replace('/','\\')
        print(paths[0])
        print(os.path.exists(paths[0]))
        print(os.path.isfile(paths[0]))
        print('----------------------')
        print(paths[1])
        print(os.path.exists(paths[1]))
        print(os.path.isdir(paths[1]))
        #copy_path_file.close()
        if os.path.exists(paths[0]):
            if os.path.exists(paths[1]):
                today = datetime.datetime.today()
                date = str(today.year) + "." + str(today.month) + "." + str(today.day) + "-" + str(today.hour) + "." + str(today.minute)
            index = paths[0].rfind('.')
            #new_path = paths[0][0:index-1] + date + paths[0][index:paths[0].len]
            #print(new_path)
            print(paths[0])

            #newPath = shutil.copy(paths[0], new_path)

Мой вопрос: почему

печатает (os.path.exists (file_to_backup))

дает мне true , но

print (os.path.exists (paths [0]))

возвращает false когда он вызывается по тому же пути?


Поскольку мой вопрос не задавался с кодом, созданным в качестве минимально воспроизводимого примера, вот более короткая версия:

import os.path
from tkinter import Tk
from tkinter.filedialog import askopenfilename
from tkinter.filedialog import askdirectory

file_to_backup = askopenfilename(title=' ')
print(os.path.exists(file_to_backup))
copy_path_file = open('copy_path.txt', 'w+')
copy_path_file.write(file_to_backup + '\n' + 'backup_directory')
copy_path_file.close()

copy_path_file = open('copy_path.txt', 'r')
paths = copy_path_file.readlines()
print(os.path.exists(paths[0]))

Этоprint возвращает true

Но это возвращает false, путь file_to_backup был записан в файл, и здесь после того, как он был прочитан из файла, он возвращает false.

Ответ, предоставленный пользователем jasonharper, являетсяправильно, мне пришлось удалить символ новой строки после прочтения пути из файла.

...