0
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'

当我运行前几个代码向我显示目录时,它显示了目录中的所有文件。

为什么会这样?

4

2 回答 2

1

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

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"], ...]。你不想那样做。

我只是在猜测,但是您想通过在名称末尾附加“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)

而且,如果您不想重命名文件,则必须澄清您要执行的操作。

于 2018-12-08T03:03:26.690 回答
0

我也有同样的问题,尝试了几种解决方案,直到我得到这个 - 也许你可以删除 for-loop 部分?:

import pandas as pd
import glob

path = r'C:\DRO\DCL_rawdata_files' # use your path
all_files = glob.glob(path + "/*.csv")

li = []
for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)
于 2020-08-20T09:56:02.217 回答