1

この StackOverflow answerで指定されたコードを使用しようとしていました。しかし、私は何の線を理解していません

level = root.replace(startpath, '').count(os.sep)

することになっています。

また、コードを実行するとValueError: zero length field name in format、行にエラーが発生しました

print('{}{}/'.format(indent, os.path.basename(root)))
4

2 に答える 2

2

level = root.replace(startpath, '').count(os.sep)

オブジェクト(ディレクトリ/ファイル)名を印刷するためのインデントのレベルを計算しています。リストされたすべてのファイルに共通であり、すべてを+10タブでインデントすると見栄えが悪いため、startpathを取り除きます:) os.sepは、Linuxでは「/」のようなパスセパレータを返します。

そのエラーについて試してみてください: print('{0}{1}/'.format(indent, os.path.basename(root))) いくつかの例があります: http://docs.python.org/2/library/string.html#format-examplesおそらくあなたのPythonは2.7+ではありません

于 2013-06-05T01:25:52.527 に答える
2

ここ:

root.replace(startpath, '').count(os.sep)

root、ウォークの現在のディレクトリです。

root.replace(startpath, '')

startpathからを削除してroot、開始パスからの相対パスを取得します。

root.replace(startpath, '').count(os.sep)

os.sepたとえば/Linux の場合、この相対パス内のの数をカウントします。このカウントは、開始パスに対する現在のディレクトリの深さです。

于 2013-06-05T01:27:25.193 に答える