[英]WindowsError trying to get directory listing with 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.