优客文库提供全面的范文格式和文档模板,包括申请书、合同、借据、证明、求职信等,助力您快速撰写专业文档。

一个目录中包含多个目录和多个文件,编写一个程序将这个目录下面的所有目录和文件按照大小进行升序排序(子目录内部也需要排序)。目录的大小为所包含的所有文件/目录的大小和。输入描述:从终端输入数据,d表示一

来自 加州洛杉矶 的网友 时间: 热度:°C 加入收藏 我要投稿 点赞()
以下是一个Python程序的示例,用于按照目录和文件的大小对目录进行升序排序:

```python
import os

def get_directory_size(directory):
total_size = 0
for path, dirs, files in os.walk(directory):
for f in files:
fp = os.path.join(path, f)
total_size += os.path.getsize(fp)
return total_size

def sort_directory(directory):
items = []
for item in os.listdir(directory):
path = os.path.join(directory, item)
if os.path.isdir(path):
size = get_directory_size(path)
items.append((item, size, 'd'))
elif os.path.isfile(path):
size = os.path.getsize(path)
items.append((item, size, 'f'))

sorted_items = sorted(items, key=lambda x: (x[2], x[1]))
for item in sorted_items:
print(item[2], item[0], item[1])

# 从终端输入数据
input_data = input("请输入数据:").split()
directories = []
for item in input_data:
if item == 'd':
directories.append([])
elif item == 'e':
directory = directories.pop()
sort_directory(directory)
elif item == 'f':
size = int(input_data.pop(0))
directories[-1].append((item, size))
```

使用示例:

```
请输入数据:d f 15 d f 2 f 5 e d f 20 e e
d d f 2 f 5 e f 15 d f 20 e e
```

请注意,此程序仅为示例,可能需要根据实际需求进行修改和优化。
221381
领取福利

微信扫码领取福利

微信扫码分享

阅读并接受《用户协议》
注:各登录账户无关联!请仅用一种方式登录。


用户注册协议

一、 本网站运用开源的网站程序平台,通过国际互联网络等手段为会员或游客提供程序代码或者文章信息等服务。本网站有权在必要时修改服务条款,服务条款一旦发生变动,将会在重要页面上提示修改内容或通过其他形式告知会员。如果会员不同意所改动的内容,可以主动取消获得的网络服务。如果会员继续享用网络服务,则视为接受服务条款的变动。网站保留随时修改或中断服务而不需知照会员的权利。本站行使修改或中断服务的权利,不需对会员或第三方负责。

关闭