gpt4 book ai didi

Python os.walk() 方法

转载 作者:行者123 更新时间:2023-12-01 03:41:38 24 4
gpt4 key购买 nike

我是 stackoverflow 的新手。在编写以下代码时,我从该论坛获得了很多帮助。下面的代码搜索系统驱动器上的所有目录/子目录,但在查找“D”驱动器时,它只查找我运行该程序的文件夹后面的那些目录和子目录。

我的意思是,如果我从 D:\Dir1\Dir2\Dir3\myCode.py 运行此程序,它将搜索 D:\Dir1\Dir2\Dir3 之后的目录和子目录\ 不是整个“D”驱动器。从同一位置运行时,它可以与其他驱动器配合使用。这是我的代码:

import os, string
total=0
for driveLetter in string.ascii_uppercase:
try:
if os.path.exists(driveLetter+':'):
for root, dirs, docs in os.walk(top=driveLetter+':', topdown=True):
for name in docs:
try:
if (name.endswith(".docx")) or (name.endswith(".doc")):
print(os.path.join(root, name))
total+=1
except:
continue
except:
continue
print ('You have a total of ' + str(total) + ' word documents in your System')

最佳答案

在 Windows 中 each process may set a current working directory on each drive separatelyD: 表示驱动器 D 上的当前工作目录。出现这种情况是因为在所有其他驱动器上当前工作目录都设置为根目录,但在 D: 它是 D:\Dir1\Dir2\Dir3\ 因为工作目录已更改为脚本的位置。要明确引用 D:目录,您需要使用 D:\。因此

drive_root = drive_letter + ':\\'  # double \\ because this is a Python string literal
if os.path.exists(drive_root):
for root, dirs, docs in os.walk(drive_root, topdown=True):

关于Python os.walk() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39542635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com