パス内のPythonファイルと非Pythonファイルの数を再帰的に数えようとしています。Pythonは1つの再帰関数で複数のカウンタを保持します
import os
def main():
#path = input('Enter an existing path to a file or directory: ')
path ='/Users/ziyuanhan/PycharmProjects/lab6/'
print(count_file(path, counter={'py':0, 'non_py':0}))
def count_file(path,counter):
if os.path.isfile(path):
if path.endswith('.py') :
counter['py']+=1
return path, counter
else:
counter['non_py']+=1
return path, counter
elif os.path.isdir(path):
for files in os.listdir(path):
print(files)
path = os.path.abspath(files)
print(path)
count_file(path, counter)
return path, counter
main()
私が持っているいくつかの問題は、私は1つの再帰関数内で複数のカウンタを維持するのに苦労した
- です。
- また、私が欲しいリターンは辞書形式ですが、パスで返さなければならないので、この方法でしかできません。
- 私は
print(files)
を使用して機能が正常に機能しているかどうかを確認しますが、私のフォルダには一度も見たことのないファイルが多く表示されます(上位7ファイル)。print(files)
/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5 /Users/ziyuanhan/PycharmProjects/lab7/recursive_dir_traversal.py .DS_Store /Users/ziyuanhan/PycharmProjects/lab7/.DS_Store .idea /Users/ziyuanhan/PycharmProjects/lab7/.idea lab7.iml /Users/ziyuanhan/PycharmProjects/lab7/lab7.iml misc.xml /Users/ziyuanhan/PycharmProjects/lab7/misc.xml modules.xml /Users/ziyuanhan/PycharmProjects/lab7/modules.xml workspace.xml /Users/ziyuanhan/PycharmProjects/lab7/workspace.xml km_mi_table.py /Users/ziyuanhan/PycharmProjects/lab7/km_mi_table.py km_to_miles.py /Users/ziyuanhan/PycharmProjects/lab7/km_to_miles.py wordfrequency.py /Users/ziyuanhan/PycharmProjects/lab7/wordfrequency.py ('/Users/ziyuanhan/PycharmProjects/lab7/wordfrequency.py', {'non_py': 0, 'py': 0})
がところで私たちは再帰関数を使用する必要が
教授は、要求されたとして、それが必須です。
いつこの機能を停止するのがわかりますか? –
私が提供したパスのすべてのファイルとディレクトリを実行したときに停止します – Byron
「停止」という意味を理解できません。 – Byron