Я новичок в Python - извините, если мой вопрос кажется глупым.
Я пытаюсь получить все файлы, присутствующие в данной папке, и создать Excel, который показывает имя и путь к файлу.
Он отлично работает с некоторыми папками, но не со всеми. Причина, по которой я думаю, может быть, он не может получить данные, которые находятся в режиме только для чтения (я не совсем уверен в этом).
Вот ошибка, которую я получаю:
F: /
Traceback (последний вызов последним):
Файл "c: /Vamsi_Folder/4.Tutorials/Python/OS/01-WIP/Get Files From Directory / Get_Files_From_Directory.py", строка 36, в
Список = getListOfFiles (имя файла)Файл "c: /Vamsi_Folder/4.Tutorials/Python/OS/01-WIP/Get Files From Directory / Get_Files_From_Directory.py", строка 30, в getListOfFiles
allFiles = allFiles + getListOfiles (fullPath)Файл "c: /Vamsi_Folder/4.Tutorials/Python/OS/01-WIP/Get Files From Directory / Get_Files_From_Directory.py", строка 22, в getListOfFiles
listOfFile = os.listdir (dirName)PermissionError: [WinError 5] Доступ запрещен: 'F: / Информация о системном томе'
Вот код, который я использую:
#program to write files from directory in Excel
import os
from openpyxl import Workbook
from openpyxl.worksheet.table import Table, TableStyleInfo
import numpy as np
from tkinter import Tk
from tkinter.filedialog import askdirectory
from tkinter.filedialog import asksaveasfilename
import ntpath
Tk().withdraw()
filename = askdirectory()
print(filename)
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
List = getListOfFiles(filename)
Filename = []
for i in List:
Filename.append(ntpath.basename(i))
workbook = Workbook()
worksheet = workbook.active
worksheet.title = "Directory"
outlist = [Filename,List]
transpose = np.array(outlist).T
transpose_outlist = transpose.tolist()
worksheet.append(["Filename","Path"])
for row in transpose_outlist:
worksheet.append(row)
count = "A1:""B"+str(len(List)+1)
tab = Table(displayName="Directory", ref=count)
style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False,
showLastColumn=False, showRowStripes=True, showColumnStripes=True)
tab.tableStyleInfo = style
worksheet.add_table(tab)
savename =asksaveasfilename(initialdir = "/",defaultextension="*.*",filetypes=\
(("xml files","*.xml"),\
('xlsx files','.xlsx'),\
("all files","*.*")))
workbook.save(savename)