Python 如何记录文件夹?
我必须制作一个函数来将示例1转换为示例2。我已经为示例1创建了一个函数。如何创建一个函数,例如2,使用嵌套的读出器,并将其大小放在括号和换行符中 例1Python 如何记录文件夹?,python,dictionary,nested,Python,Dictionary,Nested,我必须制作一个函数来将示例1转换为示例2。我已经为示例1创建了一个函数。如何创建一个函数,例如2,使用嵌套的读出器,并将其大小放在括号和换行符中 例1 { 'delo' : { 'navodila.docx' : 83273, 'poročilo.pdf' : 37653347, }, 'igre' : {}, 'seznam.txt' : 7632, 'razno' : {
{
'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)
我相信这会解决问题。其主要思想是相同的,期望您必须递归地打印结构,记住缩进并在调用函数时传递它 您的第一个版本的代码需要一个小的修正,return语句的缩进太大了。此外,只有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)
当然,输出函数会根据需要进行打印。
我希望这有助于解决您的问题
PS:Kakšnečudne domače Naroge mate to?…这是我真正想要的,一种更简单的方法,只是为了补充它
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])+ ')')
只是想澄清一下,您是否试图打印示例1中的dict,使输出看起来像示例2?@Lanaru我想是这样的……相关问题:这是我本周看到的第三个此类问题!必须是作业。@falsetru它是相关的,因为是同一个用户问的。但是这个“d”是什么?从f()返回的字典。使用dump as:dump(f('.'))我不工作,它返回“ValueError:zero-length字段名格式”。。。但我相信,韦恩·德拉、内维姆·扎卡吉、皮什值误差比萨姆·卡克斯内更容易造成纳洛基亚地区的价值误差。Ostevilct mors{}v print stavku,v pythonu 2.7在naprej pa jih ni treba。Torej:“{}{}({})”spremen v“{0}{1}({2})”PaBo delal。在东北部,东北部。。。
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])+ ')')