忽略 Python listdir 中的 "System Volume Information"
Ignore "System Volume Information" in Python listdir
我目前正在尝试获取 Windows 卷上的所有文件,以便复制某些文件。从一个文件夹复制到另一个文件夹工作得很好,但是当尝试 listdir 然后遍历找到的卷文件时,我只是被 "System Volume Information".[=13 的拒绝访问异常所打招呼=]
如何在循环中ignore/skip这个?
我正在使用递归函数,第一次使用卷本身的根路径调用它。
def list_all(path):
files = os.listdir(path)
for file in files:
low_path = os.path.join(path, file)
if os.path.isdir(low_path):
list_all(low_path)
else:
# shutil.copy()
您可以添加一个 try/except
区块
def list_all(path):
files = os.listdir(path)
try:
files.remove("System Volume Information")
except:
print("System Volume Information not present in this directory")
for file in files:
low_path = os.path.join(path, file)
if os.path.isdir(low_path):
list_all(low_path)
else:
# shutil.copy()
RMPR 的回答很好解决手头的问题(项目列表中只有一个例外)。
如果将 try/except 移动到循环内部,则循环可以更通用,以跳过所有“访问被拒绝”的实例(WindowsImageBackup 是一个常见示例,还有其他示例)。
def list_all(path):
files = os.listdir(path)
for file in files:
low_path = os.path.join(path, file)
try:
if os.path.isdir(low_path):
list_all(low_path)
else:
# shutil.copy()
except:
print("Directory ",low_path, " has denied access.")
我目前正在尝试获取 Windows 卷上的所有文件,以便复制某些文件。从一个文件夹复制到另一个文件夹工作得很好,但是当尝试 listdir 然后遍历找到的卷文件时,我只是被 "System Volume Information".[=13 的拒绝访问异常所打招呼=]
如何在循环中ignore/skip这个?
我正在使用递归函数,第一次使用卷本身的根路径调用它。
def list_all(path):
files = os.listdir(path)
for file in files:
low_path = os.path.join(path, file)
if os.path.isdir(low_path):
list_all(low_path)
else:
# shutil.copy()
您可以添加一个 try/except
区块
def list_all(path):
files = os.listdir(path)
try:
files.remove("System Volume Information")
except:
print("System Volume Information not present in this directory")
for file in files:
low_path = os.path.join(path, file)
if os.path.isdir(low_path):
list_all(low_path)
else:
# shutil.copy()
RMPR 的回答很好解决手头的问题(项目列表中只有一个例外)。
如果将 try/except 移动到循环内部,则循环可以更通用,以跳过所有“访问被拒绝”的实例(WindowsImageBackup 是一个常见示例,还有其他示例)。
def list_all(path):
files = os.listdir(path)
for file in files:
low_path = os.path.join(path, file)
try:
if os.path.isdir(low_path):
list_all(low_path)
else:
# shutil.copy()
except:
print("Directory ",low_path, " has denied access.")