计算文件夹下每个文件的大小
import ospath='/Users/mac/Desktop/curdir'
all_files = os.listdir(path)
size_dict = dict()
for each in all_files:
if os.path.isfile(each):
file_size = os.path.getsize(each)
size_dict = file_size
print(size_dict)
运行结果是一个空字典,这是为什么呀?(用Spyder编译的)
runfile('/Users/mac/Desktop/文件检索.py', wdir='/Users/mac/Desktop')
{} 本帖最后由 jackz007 于 2019-11-18 14:17 编辑
因为不在当前目录下,所以,对所有文件的判断和信息提取必须使用绝对路径。
import os
path='/Users/mac/Desktop/curdir'
size_dict = dict()
for each in os . listdir(path):
x = os . path . join(path , each)
if os . path . isfile(x):
size_dict = os . path . getsize(x)
print(size_dict) jackz007 发表于 2019-11-18 14:10
因为不在当前目录下,所以,对所有文件的判断和信息提取必须使用绝对路径。
谢谢您!
想问一下什么叫当前目录,是指我检索的目录应当和我这个python文件在同一目录下吗?(这两个文件我都放在桌面了)
另外,还想问下,os和os.path有什么区别,我看到您这里用了os.path.join,我搜了一下,是将多个路径组合后返回。。请问您能用通俗的语言解释一下这行代码的作用吗,谢谢 本帖最后由 jackz007 于 2019-11-18 16:02 编辑
zpx1002 发表于 2019-11-18 15:16
谢谢您!
想问一下什么叫当前目录,是指我检索的目录应当和我这个python文件在同一目录下吗?(这两个文 ...
你要搜索哪个目录,只要写绝对路径就可以了,不需要必须与 Python 代码文件在同一个目录。你如果连当前目录都不知道,那我也无法给你解释,因为这完全属于幼儿园的知识。
x = os. path . join('C:\\Windows', 'System32')将得到 x = 'C:\\Windows\\System32' 的字符串,所以, os. path . join() 是专门用来拼接路径字符串的,其效果和 x = 'C:\\Windows'+ '\\' + 'System32' 是完全一样的。
至于 os 和 os . path 的区别我也不知道,我只关心 os 库中一些常用的函数,只要会用就行,其它的通通不用关心。 jackz007 发表于 2019-11-18 15:46
你要搜索哪个目录,只要写绝对路径就可以了,不需要必须与 Python 代码文件在同一个目录。你 ...
呃,我的计算机确实还在幼儿园水平{:10_262:} 才刚开始学习。。好多不懂的概念
我不明白的就是您刚刚讲的 不在当前目录下,这句话的主语是什么啊,什么不在当前目录下?
如果all_files = os.listdir(os.curdir) ,这样是不是就在当前目录下了?这样写就不需要写完想检索的文件夹路径了吗? 本帖最后由 jackz007 于 2019-11-18 16:28 编辑
zpx1002 发表于 2019-11-18 16:03
呃,我的计算机确实还在幼儿园水平 才刚开始学习。。好多不懂的概念
我不明白的就是您刚刚讲 ...
靠谱,我的意思正是你搜索的路径并不是 os . curdir,而 os . listdir(path)得到的文件和子目录是不带路径的,必须和 path 结合起来成为绝对路径,os . path . isfile() 和 os . path . getsize() 才可以找到文件。如果搜索的就是 os . curdir,那就不用加 path 了。 jackz007 发表于 2019-11-18 16:25
靠谱,我的意思正是你搜索的路径并不是 os . curdir,而 os . listdir(path)得到的文件和子目 ...
好的,很感谢耐心的解答!我再去看一下相关的博客学习一下os模块。。
想问下您:
如果改成all_files = os.listdir(os.curdir) ,他检索的就是我这个py文件所在的目录是吗?
我运行了一下,他检索范围是桌面上的所有文件 是的。
页:
[1]