MYSR 发表于 2020-3-31 13:15:09

在python里如何打印一个三级菜单?

我有一个dict 我想把它所有内容print出来忽略indent问题(这个我已经完成)

{
    "name": "dir000",
    "timestamp": "2020-02-22 14:25:44",
    "type": "dir",
    "files": [
      {
            "name": "file000",
            "timestamp": "2020-02-22 14:35:21",
            "type": "file",
            "size": 13390
      },
      {
            "name": "dir000",
            "timestamp": "2020-02-22 14:35:39",
            "type": "dir",
            "files": [
                {
                  "name": "file000",
                  "timestamp": "2020-02-22 14:39:11",
                  "type": "file",
                  "size": 8139
                },
                {
                  "name": "file001",
                  "timestamp": "2020-02-22 14:49:09",
                  "type": "file",
                  "size": 5849
                }
            ]
      },
}
print成(我不知道如何上传照片):
dir000         2020-02-22 14:25:44
      file000            2020-02-22 14:35:21       13390
      dir000             2020-02-22 14:35:39
            file000             2020-02-22 14:39:11         8139
            file001             2020-02-22 14:49:09         5849
      file001             2020-02-22 14:43:29      6313
      file002             2020-02-22 15:00:01      13315
      dir000            2020-02-22 15:14:52
以此类推。。

永恒的蓝色梦想 发表于 2020-3-31 13:18:18

你这个字典的可读性有点糟糕

永恒的蓝色梦想 发表于 2020-3-31 13:18:54

非法的字典,重发

MYSR 发表于 2020-3-31 13:29:28

永恒的蓝色梦想 发表于 2020-3-31 13:18
非法的字典,重发

原字典有点长 我试试能不能发

MYSR 发表于 2020-3-31 13:30:55

{
    "name": "dir000",
    "timestamp": "2020-02-22 14:25:44",
    "type": "dir",
    "files": [
      {
            "name": "file000",
            "timestamp": "2020-02-22 14:35:21",
            "type": "file",
            "size": 13390
      },
      {
            "name": "dir000",
            "timestamp": "2020-02-22 14:35:39",
            "type": "dir",
            "files": [
                {
                  "name": "file000",
                  "timestamp": "2020-02-22 14:39:11",
                  "type": "file",
                  "size": 8139
                },
                {
                  "name": "file001",
                  "timestamp": "2020-02-22 14:49:09",
                  "type": "file",
                  "size": 5849
                }
            ]
      },
      {
            "name": "file001",
            "timestamp": "2020-02-22 14:43:29",
            "type": "file",
            "size": 6313
      },
      {
            "name": "file002",
            "timestamp": "2020-02-22 15:00:01",
            "type": "file",
            "size": 13315
      },
      {
            "name": "dir001",
            "timestamp": "2020-02-22 15:14:52",
            "type": "dir",
            "files": [
                {
                  "name": "file000",
                  "timestamp": "2020-02-22 15:23:20",
                  "type": "file",
                  "size": 10404
                },
                {
                  "name": "file001",
                  "timestamp": "2020-02-22 15:34:39",
                  "type": "file",
                  "size": 9293
                },
                {
                  "name": "file002",
                  "timestamp": "2020-02-22 15:49:13",
                  "type": "file",
                  "size": 19999
                },
                {
                  "name": "dir000",
                  "timestamp": "2020-02-22 15:55:54",
                  "type": "dir",
                  "files": [
                        {
                            "name": "file000",
                            "timestamp": "2020-02-22 15:57:39",
                            "type": "file",
                            "size": 10852
                        },
                        {
                            "name": "file001",
                            "timestamp": "2020-02-22 15:58:32",
                            "type": "file",
                            "size": 8319
                        },
                        {
                            "name": "file002",
                            "timestamp": "2020-02-22 16:09:44",
                            "type": "file",
                            "size": 16813
                        },
                        {
                            "name": "file003",
                            "timestamp": "2020-02-22 16:18:37",
                            "type": "file",
                            "size": 101
                        },
                        {
                            "name": "file004",
                            "timestamp": "2020-02-22 16:34:44",
                            "type": "file",
                            "size": 15301
                        },
                        {
                            "name": "file005",
                            "timestamp": "2020-02-22 16:49:20",
                            "type": "file",
                            "size": 2693
                        },
                        {
                            "name": "file006",
                            "timestamp": "2020-02-22 17:05:54",
                            "type": "file",
                            "size": 7719
                        }
                  ]
                },
                {
                  "name": "file003",
                  "timestamp": "2020-02-22 16:06:17",
                  "type": "file",
                  "size": 19795
                },
                {
                  "name": "dir001",
                  "timestamp": "2020-02-22 16:17:45",
                  "type": "dir",
                  "files": [
                        {
                            "name": "file000",
                            "timestamp": "2020-02-22 16:18:51",
                            "type": "file",
                            "size": 3086
                        },
                        {
                            "name": "file001",
                            "timestamp": "2020-02-22 16:23:38",
                            "type": "file",
                            "size": 8133
                        },
                        {
                            "name": "file002",
                            "timestamp": "2020-02-22 16:35:25",
                            "type": "file",
                            "size": 6916
                        },
                        {
                            "name": "file003",
                            "timestamp": "2020-02-22 16:36:05",
                            "type": "file",
                            "size": 17667
                        },
                        {
                            "name": "file004",
                            "timestamp": "2020-02-22 16:51:42",
                            "type": "file",
                            "size": 13581
                        },
                        {
                            "name": "file005",
                            "timestamp": "2020-02-22 16:59:55",
                            "type": "file",
                            "size": 9410
                        },
                        {
                            "name": "file006",
                            "timestamp": "2020-02-22 17:03:47",
                            "type": "file",
                            "size": 9857
                        }
                  ]
                },
                {
                  "name": "file004",
                  "timestamp": "2020-02-22 16:27:45",
                  "type": "file",
                  "size": 7698
                },
                {
                  "name": "file005",
                  "timestamp": "2020-02-22 16:29:31",
                  "type": "file",
                  "size": 17094
                },
                {
                  "name": "file006",
                  "timestamp": "2020-02-22 16:32:13",
                  "type": "file",
                  "size": 15849
                },
                {
                  "name": "file007",
                  "timestamp": "2020-02-22 16:45:19",
                  "type": "file",
                  "size": 9405
                }
            ]
      },
      {
            "name": "file003",
            "timestamp": "2020-02-22 15:29:17",
            "type": "file",
            "size": 16557
      },
      {
            "name": "file004",
            "timestamp": "2020-02-22 15:32:07",
            "type": "file",
            "size": 281
      },
      {
            "name": "dir002",
            "timestamp": "2020-02-22 15:37:07",
            "type": "dir",
            "files": [
                {
                  "name": "file000",
                  "timestamp": "2020-02-22 15:38:54",
                  "type": "file",
                  "size": 13709
                },
                {
                  "name": "file001",
                  "timestamp": "2020-02-22 15:52:25",
                  "type": "file",
                  "size": 2105
                },
                {
                  "name": "file002",
                  "timestamp": "2020-02-22 15:55:48",
                  "type": "file",
                  "size": 5371
                },
                {
                  "name": "file003",
                  "timestamp": "2020-02-22 16:04:48",
                  "type": "file",
                  "size": 11686
                },
                {
                  "name": "file004",
                  "timestamp": "2020-02-22 16:16:39",
                  "type": "file",
                  "size": 4903
                },
                {
                  "name": "file005",
                  "timestamp": "2020-02-22 16:30:20",
                  "type": "file",
                  "size": 3169
                },
                {
                  "name": "file006",
                  "timestamp": "2020-02-22 16:46:31",
                  "type": "file",
                  "size": 14022
                }
            ]
      }
    ]
}

永恒的蓝色梦想 发表于 2020-3-31 13:43:06

from sys import stdout

def _Printer(dict,indent,file):
    if dict['type']=='file':
      file.write('\t'*indent+f"{dict['name']}\t{dict['timestamp']}\t{dict['size']}\n")
    else:
      file.write('\t'*indent+f"{dict['name']}\t{dict['timestamp']}\n")
      for i in dict['files']:
            _Printer(i,indent+1,file)

def dict_printer(dict,file=stdout):
    _Printer(dict,0,file)

永恒的蓝色梦想 发表于 2020-3-31 14:04:48

MYSR 发表于 2020-3-31 13:30
{
    "name": "dir000",
    "timestamp": "2020-02-22 14:25:44",


from sys import stdout

def _Printer(dict,indent,file):
    if dict['type']=='file':
      file.write('\t'*indent+f"{dict['name']}\t{dict['timestamp']}\t{dict['size']}\n")
    else:
      file.write('\t'*indent+f"{dict['name']}\t{dict['timestamp']}\n")
      for i in dict['files']:
            _Printer(i,indent+1,file)

def dict_printer(dict,file=stdout):
    _Printer(dict,0,file)用dict_printer()打印即可

MYSR 发表于 2020-3-31 14:07:54

谢谢! 但是如果只能有两个参数的话该怎么写?
def print_folder(folder, indent=""):
    print(f"{indent}{folder['name']:<12} {folder['timestamp']}")
这上面两行是已知的 需要用到递归和循环 folder是我的那个字典

在我想要知道怎么写的function 前面还有一个function是专门调整我想要的indent的
def print_file_listing(file_listing, indent=""):
    print(f"{indent}{file_listing['name']:<12} "\
          f"{file_listing['timestamp']} "\
          f"{file_listing['size']:>8}")

MYSR 发表于 2020-3-31 14:11:58

永恒的蓝色梦想 发表于 2020-3-31 14:04
用dict_printer()打印即可

我那个程序里 还有一些自带的代码 我发着了 不好意思 我一开始也没讲清楚{:5_99:}

永恒的蓝色梦想 发表于 2020-3-31 14:17:36

MYSR 发表于 2020-3-31 14:07
谢谢! 但是如果只能有两个参数的话该怎么写?
def print_folder(folder, indent=""):
    print(f"{inde ...

什么意思?

MYSR 发表于 2020-3-31 14:54:54

永恒的蓝色梦想 发表于 2020-3-31 14:17
什么意思?

好像有点难以表达....

永恒的蓝色梦想 发表于 2020-3-31 15:15:11

MYSR 发表于 2020-3-31 14:54
好像有点难以表达....

……你这让我很难办啊

MYSR 发表于 2020-3-31 15:45:48

永恒的蓝色梦想 发表于 2020-3-31 15:15
……你这让我很难办啊

你知道这个地方怎么上传图片吗? 有图片就会好很多。。。 我看它这里只能给图片的网址 我不知道咋上传

_2_ 发表于 2020-3-31 16:00:15

永恒的蓝色梦想 发表于 2020-3-31 13:18
你这个字典的可读性有点糟糕

我想不只是这个问题

_2_ 发表于 2020-3-31 16:00:56

永恒的蓝色梦想 发表于 2020-3-31 13:18
你这个字典的可读性有点糟糕

这玩意真的好乱{:10_269:}

永恒的蓝色梦想 发表于 2020-3-31 16:11:37

MYSR 发表于 2020-3-31 15:45
你知道这个地方怎么上传图片吗? 有图片就会好很多。。。 我看它这里只能给图片的网址 我不知道咋上传

用图床

MYSR 发表于 2020-3-31 18:02:24

永恒的蓝色梦想 发表于 2020-3-31 16:11
用图床

图床 是什么

MYSR 发表于 2020-3-31 18:03:05

_2_ 发表于 2020-3-31 16:00
这玩意真的好乱

因为我不会传图片... r然后我有点表达不清楚..

永恒的蓝色梦想 发表于 2020-3-31 18:03:10

MYSR 发表于 2020-3-31 18:02
图床 是什么

imgchr.com

MYSR 发表于 2020-3-31 18:51:43

永恒的蓝色梦想 发表于 2020-3-31 18:03


https://imgchr.com/i/GQtY7t
https://imgchr.com/i/GQtJ0I

一个是我想要的print出来的结果

还有一个是需要加代码的code

麻烦你了!
页: [1] 2
查看完整版本: 在python里如何打印一个三级菜单?