为了账号安全,请及时绑定邮箱和手机立即绑定

系统在python中找不到指定的os.listdir路径

系统在python中找不到指定的os.listdir路径

慕妹3146593 2021-09-11 13:30:22
dirs= os.listdir('C:/Users/DELL PC/Desktop/Msc Project/MSc project/dataset')for file in dirs:    print (file)lowfiles  = [f for f in os.listdir('Training data/LOW')              if os.path.isfile(join('Training data/LOW', f))] highfiles = [f for f in os.listdir('Training data/HIGH')             if os.path.isfile(join('Training data/HIGH', f))]files = []我正在运行此代码来创建特征向量,但它显示FileNotFoundError: [WinError 3] The system cannot find the path specified: 'Training data/LOW'当我运行前几个代码向我显示目录时,它显示了目录中的所有文件。为什么会这样?
查看完整描述

2 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

尝试这个。在这种情况下,我更喜欢编写一个辅助函数而不是重复输入(几乎)相同的长行(太容易出错)。同样,如果列表理解太长,我更喜欢循环形式。


import os


def files(path):

    result = []

    for name in os.listdir(path):

        fullname = os.path.join(path, name)

        if os.path.isfile(fullname):

            result.append(name)

    return result


path = r"C:\Users\DELL PC\Desktop\Msc Project\MSc project\dataset"

for file in os.listdir(path):

    print(file)


lowfiles = files(os.path.join(path, r"Training data\LOW"))

highfiles = files(os.path.join(path, r"Training data\HIGH"))

澄清下面的评论:以下将进入一个无限循环,打印 1, 2, 3, 1, 2, 3, 1, 2, 3 ...


a = [1, 2, 3]

for i in a:

    a.append(i)

    print(i)

永远不要向正在执行循环的容器添加元素。


在这里,您正在尝试执行此操作:


for i in lowfiles:

    lowfiles.append([i, 'Low'])

因此,如果lowfiles最初包含["file1", "file2"],则在第一个循环之后它将是["file1", "file2", ["file1", "Low"]],然后["file1", "file2", ["file1", "Low"], ["file2", "Low"], [["file1", "Low"], "Low"], ...]。你不想那样做。


我只是猜测,但您想通过在名称末尾附加“低”来重命名文件,然后:


首先修改files上面的函数以追加fullname(有目录)而不是只有name没有目录),这样你就不必os.path.join一次又一次。


要重命名文件,请执行以下操作:


for fullname in files(os.path.join(path, r"Training data\LOW")):

    os.rename(fullname, fullname + "Low")

如果您不想更改文件扩展名,则可以执行以下操作:


for fullname in files(os.path.join(path, r"Training data\LOW")):

    base, ext = fullname.rsplit(".", 1)

    os.rename(fullname, base + "Low." + ext)

如果您不想重命名文件,则必须说明您要尝试做什么。


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 252 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号