FileNotFoundError с файлом без расширения в python на Windows - PullRequest
0 голосов
/ 10 июля 2020

У меня есть файл без расширения по пути: C: / Users / example / Downloads. имя файла - examplefile, поэтому путь будет C: / Users / example / Downloads / examplefile. Я пытался использовать

os.stat("C:/Users/example/Downloads/examplefile").st_size

, но получил эту ошибку:

  File "<pyshell#26>", line 1, in <module>
    os.stat(file).st_size
FileNotFoundError: [WinError 2] The specified file could not be found: 'C:/Users/example/Downloads/examplefile' 

, поэтому я попытался использовать os.path.getsize(), но все равно получил ту же ошибку. Как я могу узнать размер файла?

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Файл имеет расширение в этом случае - это просто windows, которое не показывает его в конфигурациях по умолчанию.

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

Для удобства вы можете использовать pathlib вместо os, так как он объединит функциональность глобуса и статистику в одноместное место:


from pathlib import Path

path_to_guess = Path("C:/Users/example/Downloads/examplefile")

path = path_to_guess.parent.glob(path_to_guess.stem + ".*")[0]
print(path)
# here you have the extension. Of course, you might have more than one
# file with the same base name- this is good for a
# one time script or interactive use - 
# for production you should check also creation time, and maybe use
# other means to pick the correct file.
size = path.stat.st_size()
0 голосов
/ 10 июля 2020

Вы должны использовать \\ вместо / при обращении к путям в python. os.stat(C:\\Users\\example\\Downloads\\examplefile).st_size должен сработать.

Извините, забыл, что python автоматически интерпретирует это и не отвечает на вопрос. Но это не выдает ошибки, когда я пытаюсь сделать это по-вашему:

import os
file = "C:/Users/user/Downloads/data"
print(os.stat(file).st_size)
...