Windows python 中无扩展文件的 FileNotFoundError

FileNotFoundError with no-extension file in python on Windows

我在路径中有一个无扩展名的文件: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() 但我仍然遇到同样的错误。 我如何获得文件大小?

在引用 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)

在这种情况下,文件 具有 扩展名 - 只是 windows 在默认配置中不显示它。

您可以在尝试访问 Python 时使用 glob 模式获取真实文件名。

为方便起见,您可能希望使用 pathlib 而不是 os ,因为它将 glob 功能和统计信息结合在一个地方:


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()