我假设你已经有了一个dictionary, key is the path of the folder and the value is the size of the folder. 接下来就是string manipulation and print statement, that's it. surge 发表于 2021-02-10 00:41
import os from humanize import naturalsize def get_size(start_path = ''.''): total_size: int = 0 for dirpath, dirnames, filenames in os.walk(start_path): for f in filenames: fp = os.path.join(dirpath, f) total_size += os.path.getsize(fp) return total_size mydir = "/tmp/" # put your path here folders = next(os.walk(mydir))[1] dir_size_dict = {os.path.join(mydir, folder): get_size(os.path.join(mydir, folder)) for folder in folders} max_size = max(list(dir_size_dict.values())) for path, size in dir_size_dict.items(): print(f"{path} {round(size/max_size*10) *''=''} {naturalsize(size)}")
import os from humanize import naturalsize def get_size(start_path = ''''.''''): total_size: int = 0 for dirpath, dirnames, filenames in os.walk(start_path): for f in filenames: fp = os.path.join(dirpath, f) total_size += os.path.getsize(fp) return total_size mydir = "/tmp/" # put your path here folders = next(os.walk(mydir))[1] dir_size_dict = {os.path.join(mydir, folder): get_size(os.path.join(mydir, folder)) for folder in folders} max_size = max(list(dir_size_dict.values())) for path, size in dir_size_dict.items(): print(f"{path} {round(size/max_size*10) *''''=''''} {naturalsize(size)}")
import os from humanize import naturalsize def get_size(start_path = ''.''): total_size: int = 0 for dirpath, dirnames, filenames in os.walk(start_path): for f in filenames: fp = os.path.join(dirpath, f) total_size += os.path.getsize(fp) return total_size mydir = "/tmp/" # put your path here folders = next(os.walk(mydir))[1] dir_size_dict = {os.path.join(mydir, folder): get_size(os.path.join(mydir, folder)) for folder in folders} max_size = max(list(dir_size_dict.values())) for path, size in dir_size_dict.items(): print(f"{path} {round(size/max_size*10) *''=''} {naturalsize(size)}")
谢谢大家集思广益,我有点思路了
就是先做个遍历目录作为key 然后计算出目录大小,我记得有个subprocess popen可以,作为value 把两个list并成dictionary,然后 for in
==那个是找出最大文件做基准,然后除以……呃,我再想想
🔥 最新回帖
属实。CS 的活是 power.on()
没毛病,插电源是EE的活
Chegg可以帮做编程的作业吗?
神马学校啊,疫情下远程教学TA不是更重要吗?
🛋️ 沙发板凳
我学的课程有一些编程课
那种语言?
如果不擅长编程,那就不要做呀。IT方面不用编程的职务也很多
找个码农男朋友
Python…已经是最简单的了
哎
作业要due了,来不及了
这个专业算是编程课很少的了……
笑死。 码农男朋友来不及就只能靠同学了呀。
或者把作业post上来,让华人上的码农帮帮忙。
加油啊,Google用上,助教问上。
去注册Chegg,找家教帮忙
sql是很简单啊……
我去研究一下
“然后要把大小做成百分比,用===来表示”。 这个requirement不懂。 ===啥意思?
是个比较,打个比方 /home/documents =======. 9GB /root/etc/ ===....... 3GB
大概是这么个意思……其实题目我都看不懂
要去撞墙了
这个是用while loop吗?
我有码农前男友……纠结要不要去找一下……
前男友也行
万一人家跟我说只会Java怎么办……哎
Java 程序员一般都能写 python 啊,一边 google 一边写就是了。
除非你是 python for data science, numpy pandas SKlearn ,Java 程序员倒不一定会。
我是觉得人家会拿这个做借口
哎,我还是再研究研究吧,真的头发都要扯光了
是指= 的长度要和folder里文件大小成比例吗?
不用while loop。如果这样,找到最小的folder作为基准1, 算出其他folder的size是这个最小的几倍,四舍五入到integer,随后把“=”乘以这个倍数生成了你的“====”的。 python里string也可以乘的
要是你前男友还没结婚,一般不会这么小气我觉得。
结婚了……我已经够伤心了,如果写作业还被据,我会更伤心
我宁愿drop这门课也不想让自己那么伤心💔
有Google ,YouTube,华人,前男友这种东西,就不用再联系了,其实,现男友,老公也都用不上了,三App在手,天下我有。
不好意思,不会编程,会的,给我上
是的是的,就是这个!这位大侠,能多说一点吗?
这个,还真不一定。别问我怎么知道的。
好吧结婚了还是老死不相往来算了。
小声问一下,那么伤心当初干嘛崩啊。当然跑题了,您先马 code。
你去注册一下,然后作业发上去,就有人帮你解了。也不是很贵。我以前做过这个,我是做TA.
需要很久吗?我快due了
我觉得应该把最小的和最大的都找出来,然后据此找一个OK的文件大小,让横杠数目有个上限,譬如100。不然最小的文件一个byte的话,一个1MB的文件就能要人命了……
单纯说女生没有男友或者蓝颜太可怜了 ,,,
你也太墨迹了。应该早点解决的。我也不太记得了。你自己搜一下要多久吧。好像是有时间限制的。你这次对付一下吧,下次早点传上去
我假设你已经有了一个dictionary, key is the path of the folder and the value is the size of the folder. 接下来就是string manipulation and print statement, that's it.
假装自己看得懂
Good point!
下次记得人生要有蓝颜知己。
这次我也帮不了你,因为我的 python 只会写 python data science ,,,
python 里基本的data structure 有一个dictionary的,在其他语言里就是个hashmap
https://docs.python.org/3/tutorial/datastructures.html. 看看第5.5
找最大的就行了
谢谢,我睡醒去看
不不不,我有万能的华人……哭泣的猴子
你说了你会遍历目录,也会计算文件大小。所以拿到这些信息之后你最好先存在一个地方,再算条条的长短。怎么存呢?用dictionary就是最简单直观的了。
不知道啥是python dictionary的话问google。
我也是做得好苦。也做了二十年。老以为是自己不够努力。早点知道人各有所长,就不那么辛苦了。
那用 pandas dataframe 其实更简单,直接 max 和 div,当然楼主课程不许用。
单纯问是不是找个码农男朋友一了百了?
关键是这个是 python 编程课,还是 python data science 课。data science 课一般是 pandas matplotlib 其实是 scripting 而不是编程。
男生还是要对红颜好一点,人生婚前也就那么十几年。
没找到。当地码农领袖当年对我说:你啥都能自己解决,男人觉得他们没价值。
我知道dictionary,就是key:value对吧
我有点思路了,但那个==怎么做还是浆糊
哈哈哈,你也可以教男生的嘛 ,,,
然后之前的遍历,顺便把最小和最大的size拿下来。
假定横杠数目不超过100:一个横杠代表的大小=最大文件大小/100 if 最大文件大小/最小文件大小>100 else 最小文件大小。
然后挨个儿用dict里头的value除以一个横杠代表的大小,就是代表每个文件大小的横杠数目。直接用字符串“=”乘以横杠数目,就成了一个反映文件大小的长字符串。打印出来就行了。
呃,我竟然看懂了……但还是不知道怎么做……怎么才能把计算出来的和value key一起打印出来呢?再做个dictionary?
读书……打死我不做码农……我的脑子只够SQL的,难度大点就不行了
for x, y in thisdict.items(): print(x, y)
https://www.w3schools.com/python/gloss_python_loop_dictionary_items.asp
找个马工系帅哥男朋友把课对付过去,顺便还解决人生大事。
差不多就这样:
print(key+ bar_str+str(value)+”MB”)
import os from humanize import naturalsize def get_size(start_path = ''.''): total_size: int = 0 for dirpath, dirnames, filenames in os.walk(start_path): for f in filenames: fp = os.path.join(dirpath, f) total_size += os.path.getsize(fp) return total_size mydir = "/tmp/" # put your path here folders = next(os.walk(mydir))[1] dir_size_dict = {os.path.join(mydir, folder): get_size(os.path.join(mydir, folder)) for folder in folders} max_size = max(list(dir_size_dict.values())) for path, size in dir_size_dict.items(): print(f"{path} {round(size/max_size*10) *''=''} {naturalsize(size)}")
找家教也更好,只是要花点钱。
好久不写了,有些rusty。凑合这用吧。 我的运行结果是。 = 最多只有十个。按比例。 如果是0 size的化就没有
/tmp/powerlog 0 Bytes /tmp/dir2 ====== 2.0 MB /tmp/testdir ======== 2.7 MB /tmp/dir1 == 695.4 kB /tmp/agentp ========== 3.5 MB
家教也行,但收钱的也不一定比蓝颜教得好。
因为计算机的基础,主要是 procedural thinking。
有很多人天生没有 procedural thinking,这个找蓝颜也没用。
但对于天生有 procedural thinking 的,有个问题就是计算机的基础课通常教的不一定好,或者符合学生思路。蓝颜跟红颜一般比较心有灵犀,容易教 :-P
如果我就会很自卑,觉得自己不够好,不敢找码工男友,一定要自己也能做了,才敢找,但人家又觉得自己没价值。不知我是一种什么心理。
好佩服这位妹妹坦承自己的短处。
人各有长,人各有短。
人生苦短,遇上红颜蓝颜就别犹豫了,至少是人生经历。
忘了说一句,这里用了humanize这个library,就是把bytes convert成human readable的string。你要install这个library,一般python by default 没有这个。 如果你用anaconda的话, 就在shell里运行一下
conda install humanize
youtube 很多课程自己都可以学。不系统的学蓝颜有什么用。靠别人很难学会。最终还是要靠自己,需要自己领悟。
现在搬到大农村了,方圆几里见不到两个人,听天由命吧。
有蓝颜也要系统上课的。蓝颜只是点拨一下。
总不能让蓝颜教,自己连选修课都不报名。这肯定不行。
当然蓝颜可遇不可求,就是一说。
排序,找出最大的文件的大小,作为满格,比如100个=
最小文件 / 最大文件 等于 几,就有几个=,剩下的都是.
男人得靠c语言改变命运
C++20
c语言是必修,所以能把到妹。
这话从何说起?
哈哈,才看到你的解释.
赞👍
谢谢!谢谢mm!
我找了……我把题贴上去后说可能tutor做的题会被我直接submit,把我据了……
读书的时候没有办法的,其实就是训练逻辑思维和学习方法。真正的知识大多都是在工作中学的,学校里学的有20%用得上就不错了
hash map啊,如果是java的话,玩的花哨一点直接上stream
都提示那么多遍了蓝颜!
把蓝颜发展为情人
蓝颜,你能帮我做一下题吗?
层主找年轻一代啊,顺便把终身大事一起解决了。
要看你天赋里有没有 procedural thinking。如果有,有些蓝颜会教会你,带你入门,而不是仅仅像舔狗一样代劳作业。
如果你真没天赋,有些蓝颜会劝你折中改变方面,比如读 data science。
因为蓝颜不是舔狗,我觉得好一点的蓝颜更看重共同渡过,更为红颜的长期着想。