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

一个目录中包含多个目录和多个文件,编写一个程序将这个目录下面的所有目录和文件按照大小进行升序排序(子目录内部也需要排序)。目录的大小为所包含的所有文件/目录的大小和。输入描述:从终端输入数据,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
领取福利

微信扫码领取福利

微信扫码分享