Python:Os文件大小为/dev/core返回垃圾
我已经编写了一个python脚本,它通过我的文件系统(LINUX)收集文件的大小 以下是相关位:Python:Os文件大小为/dev/core返回垃圾,python,file,permissions,operating-system,Python,File,Permissions,Operating System,我已经编写了一个python脚本,它通过我的文件系统(LINUX)收集文件的大小 以下是相关位: for name in files: file_name = os.path.join(root,name) file_size = os.stat(p).st_size if x>1000000000000: print x, p 因此,该脚本返回大小大于1 TB的任何文件的大小和路径。(我的系统上没有这样的文件——我的SSD空间是120GB。)它打印以下输出: 140737486
for name in files:
file_name = os.path.join(root,name)
file_size = os.stat(p).st_size
if x>1000000000000:
print x, p
因此,该脚本返回大小大于1 TB的任何文件的大小和路径。(我的系统上没有这样的文件——我的SSD空间是120GB。)它打印以下输出:
140737486266368 /dev/core
140737486266368 /proc/kcore
但我知道这些文件并没有这么大。为什么我会得到这些错误的值
我应该注意,我已经以root用户身份运行了脚本。我有权限访问这些文件。这里出了什么问题?问题是
/dev
和/proc
中的文件不是普通文件,而是设备视图,例如内核视图。如果您检查该文件的大小(实际上是同一个文件,只是符号链接),您会注意到,即使ls-l
报告的大小也非常大
最好的方法是至少跳过/dev
、/proc
、/sys
和/run
文件夹(谢谢,user3553031
)。另一种可能是检查文件属性——它们会显示这些是特殊文件。但是,忽略特殊文件夹可能更容易
不幸的是,这是高度特定于操作系统的,上面的说明是针对Linux的。甚至不同的发行版也可能有不同的特殊文件,以及BSD、Windows和c。可能会有不同的行为。还排除/sys和/run。如果你有任何安装上述任何一个的chroot,也排除它们。