У меня есть папка со многими zip-файлами, большинство из которых содержат шейп-файлы, а некоторые имеют подпапки, которые содержат zip-файлы, которые содержат шейп-файлы. Я пытаюсь извлечь все в одну основную папку без сохранения структуры папки . Вот где я сейчас нахожусь;
import os, zipfile
def getListOfFiles(dirName):
# create a list of file and sub directories
# names in the given directory
listOfFile = os.listdir(dirName)
allFiles = list()
# Iterate over all the entries
for entry in listOfFile:
# Create full path
fullPath = os.path.join(dirName, entry)
# If entry is a directory then get the list of files in this directory
if os.path.isdir(fullPath):
allFiles = allFiles + getListOfFiles(fullPath)
else:
allFiles.append(fullPath)
return allFiles
def main():
dirName = r'C:\Users\myusername\My_Dataset'
# Get the list of all files in directory tree at given path
listOfFiles = getListOfFiles(dirName)
# Print the files
for elem in listOfFiles:
print(elem)
zipfile.ZipFile.extractall(elem)
print("****************")
if __name__ == '__main__':
main()
Этот скрипт печатает все шейп-файлы (включая те, которые находятся в подпапках). Теперь мне нужно извлечь все эти перечисленные шейп-файлы в одну основную папку. Я пытаюсь zipfile.ZipFile.extractall(elem)
, но это не работает.
line 1611, in extractall
members = self.namelist()
AttributeError: 'str' object has no attribute 'namelist'
Ошибка, которую я получаю. zipfile.ZipFile.extractall(elem)
это строка, которая не работает. Я предполагаю, что он ожидает один zip-файл, но я пытаюсь скормить ему папку (или список в данном случае?)
Как мне изменить этот скрипт, чтобы он извлекал мои перечисленные шейп-файлы в папку (предпочтительно новая папка)