繁体   English   中英

os.listdir 未列出目录中的文件

[英]os.listdir not listing files in directory

出于某种原因 os.listdir 不适合我。 我在 input_dir 中有 6.xlsx 文件,但它创建了一个没有任何内容的列表,而不是显示 6 个文件的列表。 如果我将 .xlsx 文件移回脚本所在的一个目录,并更新 input_dir 路径,则它会找到所有 6 个文件,但我需要将 6 个文件放在它们自己文件夹中的一个目录中。 当我将它们向上移动一个目录到他们自己的文件夹中时,我更新了 input_dir 路径,它根本找不到它们。

import openpyxl as xl 
import os
import pandas as pd
import xlsxwriter

input_dir='C:\\Users\\work\\comparison'

files = [file for file in os.listdir(input_dir)
         if os.path.isfile(file) and file.endswith(".xlsx")]


for file in files: 
   input_file =  os.path.join(input_dir, file)
   wb1=xl.load_workbook(input_file)
   ws1=wb1.worksheets[0]

将文件移动到 input_dir 时,以下行会创建一个空列表:

files = [file for file in os.listdir(input_dir)
         if os.path.isfile(file) and file.endswith(".xlsx")]

这是因为您正在检查os.path.isfile(file)而不是os.path.isfile(os.path.join(input_dir, file))

当文件与脚本位于同一目录中时,它能够找到该文件并正确创建列表。

或者,您可以尝试使用 glob.glob ,它接受文件路径模式并返回迭代器中文件的完整路径。

问题来自os.path.isfile(file)os.listdir(input_dir)返回input_dir目录内的文件名列表,但没有它们的路径。 因此您的错误,因为os.path.isfile(file)将查看您当前的目录,该目录显然没有任何这些文件名。

您可以通过简单地更改os.path.isfile(input_dir + '\\' + file)轻松纠正此问题,但更漂亮的解决方案是简单地删除这部分代码(就像os.listdir返回此文件名,然后有必要进入您的目录,无需检查是否如此):

files = [file for file in os.listdir(input_dir) if file.endswith(".xlsx")]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM