WinError 2 — os.path.getmtime не находит файл в Python 3

#python #loops #os.path

#python #циклы #os.path

Вопрос:

У меня возникли трудности с небольшим количеством кода, предназначенного для записи даты «Последнего изменения» ряда файлов в документ CSV.

У меня все остальное работает должным образом, однако эта функция возвращает:

 FileNotFoundError: [WinError 2] The system cannot find the file specified: 'filenamesoandso.docx'
  

Вот контекст:

 pathList = ["S:\BUILDING\",
        "S:\ONGOING PROJECTSFACILITY OPERATIONSOPERATIONS\"
        ]

def file_date_modified(pathList):
sys.stdout = open("date modified.txt", "w ")
for root, dirs, files, in os.walk(a):
    for file in files:
        if file.endswith(".pdf"):
             print(time.ctime(os.path.getmtime(file)))
        if file.endswith(".pptx"):
             print(time.ctime(os.path.getmtime(file)))
        if file.endswith(".doc"):
             print(time.ctime(os.path.getmtime(file)))
        if file.endswith(".docx"):
             print(time.ctime(os.path.getmtime(file)))
        if file.endswith(".xlsx"):
             print(time.ctime(os.path.getmtime(file)))

for a in pathList:
    file_date_modified()
  

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

 def file_name_print(pathList):
sys.stdout = open("file names.txt", "w ")
for root, dirs, files in os.walk(a):
    for file in files:
        if file.endswith(".pdf"):
             print(os.path.splitext(file)[0])
        if file.endswith(".pptx"):
             print(os.path.splitext(file)[0])
        if file.endswith(".doc"):
             print(os.path.splitext(file)[0])
        if file.endswith(".docx"):
             print(os.path.splitext(file)[0])
        if file.endswith(".xlsx"):
             print(os.path.splitext(file)[0])
  

Я все еще новичок, поэтому, возможно, я упускаю из виду что-то глупое.

Ответ №1:

Вероятно, вам нужно добавить каталог к имени файла, поскольку каталог файла отличается от текущего рабочего каталога скрипта, как кажется.

Способ сделать это может быть:

 for file in files:
    file_path = os.path.join(root, file)

    if file.endswith(".pdf"):
         print(time.ctime(os.path.getmtime(file_path)))
  

Это работает для вас?

Комментарии:

1. Случайно нажал «enter» в ответе, прежде чем это было сделано.

2. Упс, случайно нажал «enter» в ответе, прежде чем это было сделано. Ошибка изменилась на WinError 3, и я вижу, что это может быть связано с количеством обратных косых черт / escape-символов, которые генерирует программа: {Ошибка FileNotFoundError: [Ошибка WinError 3] Система не может найти указанный путь: ‘S:\ONGOING ПРОЕКТЫ \ ОПЕРАЦИИ ОБЪЕКТА \ ТЕКУЩИЕ \}

3. Возможно, удалите все косые и обратные черты и используйте os.path.join('S:', 'BUILDING') вместо этого

4. Да, похоже, проблема в обратных косых чертах и в том, как программа их анализирует. Но, похоже, ваше решение устранило мою проблему. Спасибо!