我刚开始使用我的第一个Python脚本。现在我面临一个问题,这似乎超出了我目前的技能。
目标: 我希望将所有* .md文件存储在./pages/下。当我读到os的walk函数似乎是实现这个目标的最简单的方法。
问题: 我现在得到的结果是不正确的。它似乎是在正确的方向,但有些东西不应该像它应该的那样。 if语句总是导致else子句,我真的不知道为什么。除了找到所有.md文件之外,if条件永远不会为真。
#!/usr/bin/env python
import os
import sys
import glob
def get_mds():
for root, dirs, files in os.walk("./pages/"):
for name in files:
if name.endswith((".md")):
print("success")
else:
print(os.path.join(root, name))
以下是此脚本的输出。
# Output
./pages/01.home/wizard.png
./pages/01.home/deploy-key.png
./pages/01.home/workflow.png
./pages/01.home/default.md <- MD
./pages/01.home/webhooks.png
./pages/01.home/01.how-to/default.md <- MD
正如您所见,找到了所有.md文件。但它总是以else子句结束。匹配* .md文件的正确条件是什么?
提前致谢。
答案 0 :(得分:0)
您的代码运行良好,但也许您误解了它。正如您所看到的,* .md位于./pages/01.home
目录下,但是,您的files
列表只包含“./pages”下的所有文件。这是一个简单的修改代码,用于获取根路径下的所有文件和第一个子目录。
import os
import sys
import glob
def get_files(path):
for root, dirs, files in os.walk(path):
return files
def get_mds(path):
files_result = []
for root, dirs, files in os.walk(path):
files_result.extend(files)
for dir in dirs:
files_result.append(get_files(path+dir))
for name in files_result:
if name.endswith((".md")):
print("success")
else:
print(os.path.join(root, name))
get_mds("./pages/")
答案 1 :(得分:0)
它是如何运作的:
for root, dirs, files in os.walk("./pages/"):
for name in files:
if name.endswith('.md'):
print(os.path.join(root, name))
else:
continue
输出:
./pages/01.home/01.how-to/default.md
./pages/01.home/default.md
取代&#34;用&#39;一切都按预期工作