当前位置: 首页 > 知识库问答 >
问题:

正在尝试使用Python从目录中获取所有文件(包括只读文件)

吴弘壮
2023-03-14

我是新来的Python-请原谅我,如果我的问题看起来愚蠢。

我试图获取给定文件夹中存在的所有文件,并创建一个显示文件名和路径的Excel。

它在某些文件夹上运行良好,但不是所有文件夹。我认为原因可能是它无法获取处于只读模式的数据(我对此不太确定)。

以下是我得到的错误:

F://
回溯(上次调用):
文件“c:/Vamsi_文件夹/4.Tutorials/Python/OS/01-WIP/Get Files From Directory/Get_Files_From_Directory.py”,第36行,在
List=getListOfFiles(文件名)中

文件“c:/Vamsi_Folder/4.Tutorials/Python/OS/01-WIP/Get Files From Directory/Get_Files_From_Directory.py”,第30行,在getListOfFiles
allFiles=allFiles getListOfFiles(完整路径)中

文件“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:/System Volume Information”

以下是我正在使用的代码:

#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)

共有1个答案

萧阳波
2023-03-14

您无权访问硬盘分区的“系统卷信息”。如何访问系统卷信息文件夹

其次,在我看来,这里有一个更好的(pythonic)代码,用于获取目录及其子目录中所有文件的列表。

import os
import csv

directory = r'F:/'

files_list = [d + '\\' + f for d, dirs, files in os.walk(directory) for f in files]

with open('dicrectory_files.csv', 'w', newline='') as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(['basename', 'filepath'])
    for file in files_list:
        csv_writer.writerow([os.path.basename(file), file])

然后您可以直接在Excel中打开此CSV。

如果您不想直接在代码中输入目录路径,那么您可以使用以下语句更改目录路径分配语句。

directory = input('Enter directory path: ')
if directory == '':
    directory = os.getcwd()

然后,在运行代码文件(.py)时,只需在提示窗口中复制并粘贴要遍历的目录的路径。CSV文件将在代码文件的目录中创建。

 类似资料:
  • 本文向大家介绍python 遍历目录(包括子目录)下所有文件的实例,包括了python 遍历目录(包括子目录)下所有文件的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇python 遍历目录(包括子目录)下所有文件的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 假设我有一个目录中,其中有3个符号连接其他目录 ,和。我想列出中的所有文件,包括在那些,和。 为了更通用,我想列出所有文件,包括目录中的符号链接文件。,等停止在符号链接上,而无需导航到它们以进一步列出。 问题答案: 该选项将完成您想要的。它取消引用符号链接。 因此,您的命令将是: 您也可以使用 该选项指示find跟随符号链接到目录。 在Mac OS X上使用 如已弃用。

  • 问题内容: 我想要一个Java程序,该程序从当前目录(运行.class文件的同一目录)中读取用户指定的文件名。 换句话说,如果用户将文件名指定为“ myFile.txt”,并且该文件已经在当前目录中: 不起作用。为什么? 我在Windows中运行它。 问题答案: 当前目录不是(不一定是).class文件所在的目录。它是进程的工作目录。(即:您启动JVM时所在的目录) 您可以从同一目录加载文件*与.

  • 问题内容: 我坚信这只是一种语法-但是我不知道为什么我的代码: 将无法正常工作-它显然可以进入“ testfilefolder”文件夹,并告诉我该文件在那里,即未找到错误消息“ file2.txt”。因此它可以找到它来告诉我找不到它… 但是,我得到了这段代码: 奖金-这是做我想做的事情的好方法吗(从文件中读取并计算单词的出现频率)?这是我使用Python的第一天(尽管我有很多编程经验。) 我必须说

  • 问题内容: 出于某种原因,我使用以下代码将文件名始终保持为“ 1”: 当我在$ results_array中回显每个元素时,我得到了一堆‘1’,而不是文件名。如何获得文件名? 问题答案: 不要打扰open / readdir,而使用:

  • 本文向大家介绍Python获取文件所在目录和文件名的方法,包括了Python获取文件所在目录和文件名的方法的使用技巧和注意事项,需要的朋友参考一下 实例如下: 输出: 以上就是小编为大家带来的Python获取文件所在目录和文件名的方法全部内容了,希望大家多多支持呐喊教程~