如何听写文件夹?

2024-05-14 23:22:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须做一个函数来将示例1转换为示例2。我已经做了一个例子1的函数。如何创建一个函数,例如2,使用嵌套的读出器,它们的大小在括号中,并且使用换行符?你知道吗

例1。你知道吗

{
       'delo' : {
          'navodila.docx' : 83273,
          'poročilo.pdf' : 37653347,
        },
       'igre' : {},
       'seznam.txt' : 7632,
       'razno' : {
          'slika.jpg' : 4275,
          'prijatelji' : {
             'janez.jpg' : 8734765,
   }

例2。你知道吗

delo 
   navodila.docx (83273)
   poročilo.pdf (37653347)
   artikli.dat (253)
igre
seznam.txt (7632)
razno
   slika.jpg (4275)
   prijatelji
      janez.jpg (8734765)

我已经为第一个示例创建了函数,但没有换行:

import os

def f(folder):
    dict={}
    list = os.listdir(folder)
    for ts in list:
        fullName = folder + '\\' + ts

        if os.path.isfile(fullName):
            size=os.path.getsize(fullname)
            dict[ts]=size
        else:
            dict[ts]=f(fullName)
        return (dict)

Tags: 函数示例pdfosfolderdictjpgdocx
3条回答

我相信这会解决问题的。其主要思想是相同的,期望您必须递归地打印结构,记住缩进并在调用函数时传递它。你知道吗

你的第一个版本的代码需要一个小的修正,在返回语句的缩进是一个标签太大。而且,只有advice、list和dict是变量名的糟糕选择,因为它们已经是内置类型了。你知道吗

import os

def f(folder):
    mape={}
    sez = os.listdir(folder)
    for ts in sez:
#        if ts == "." or ts == "..": continue
        fullName = folder + '/' + ts
        if os.path.isfile(fullName):
            size=os.path.getsize(fullName)
            mape[ts]=size
        else:
            mape[ts]=f(fullName)
    return (mape)

struktura = f('.')

def output(tree, zam=0):
    for i in tree:
        if isinstance(tree[i], (int, long)):
            print "{0}{1} ({2})".format(' '*zam*4, i, tree[i])
        else:
            print ' '*zam*4+i
            output(tree[i],zam+1)

output(struktura)

当然,output函数会根据需要进行打印。 我希望这有助于解决你的问题。你知道吗

PS:Kakšnečudne domače naloge mate to?。。。你知道吗

def dump(d, level=0, indent=4):
    for name in d:
        if isinstance(d[name], dict):
            print('{0}{1}'.format(' ' * level, name))
            dump(d[name], level+indent)
        else:
            print('{0}{1} ({2})'.format(' ' * level, name, d[name]))

这才是我真正想要的,一个更简单的方法,只需再装满它

def f(map,n=0): 
        dictionary=beforeF(map) #function before i made
        for key in dictionary.keys():
            fullName = map + '\\' + key
            if path.isdir(fullName): 
                print(n*'\t'+key+':')

                f(fullName, n+1)
            else:
                print(n*'\t'+key + ' (' + str(dictionary[key])+ ')')

相关问题 更多 >

    热门问题