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]系统找不到指定的路径:“ Training data / LOW”
当我运行前几个代码向我展示目录时,它正在显示目录中的所有文件。
为什么会这样?
答案 0 :(得分: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"], ...]
。你不想那样做。
我只是猜测,但是您想通过在名称末尾附加“低”来重命名文件,然后:
首先修改上面的函数files
来附加fullname
(带有目录),而不是仅添加name
(不带目录),这样您就不必{{1 }}一次又一次。
要重命名文件,请执行以下操作:
os.path.join
如果您不想更改文件扩展名,则可以执行以下操作:
for fullname in files(os.path.join(path, r"Training data\LOW")):
os.rename(fullname, fullname + "Low")
如果您不想重命名文件,则必须澄清您要做什么。
答案 1 :(得分: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)