从路径读取多个 CSV 文件
Reading multiple CSV files from path
我有一组 CSV 文件,我想从 Windows 路径读取它们。我的代码是这样的:
directory = os.listdir(r'C:\Users\User\Documents\etc...')
for files in directory:
print(files)
dataset = pd.read_csv(files, header = None)
trainSet = dataset.values.tolist()
editedSet = dataset.values.tolist()
问题是我收到错误 No such file or directory: "filename"
而文件当然存在于目录中。我找到的解决方案适用于纯文本文件,而我有 CSV。对我做错了什么有什么建议吗?
谢谢
os.listdir
returns目录里面的文件列表relative
到输入路径
您需要将其与输入路径结合起来才能实际调用该文件
base_dir = r'C:\Users\User\Documents\etc...'
directory = os.listdir(base_dir)
for files in directory:
print(files)
path = os.path.join(base_dir, files)
print(path)
dataset = pd.read_csv(path, header = None)
trainSet = dataset.values.tolist()
editedSet = dataset.values.tolist()
问题是您只提供文件名作为参数。您应该改用“路径”。
有很多方法可以解决这个问题。一种现代方法是使用 pathlib 而不是 os
进行文件管理。
这是 pathlib
的解决方案。
from pathlib import Path
root_path = Path(r'C:\Users\User\Documents\etc...')
file_paths = root_path.glob('*.csv')
files = [root_path.joinpath(file_path) for file_path in file_paths]
for file in files:
print(file)
dataset = pd.read_csv(file, header = None)
trainSet = dataset.values.tolist()
editedSet = dataset.values.tolist()
我有一组 CSV 文件,我想从 Windows 路径读取它们。我的代码是这样的:
directory = os.listdir(r'C:\Users\User\Documents\etc...')
for files in directory:
print(files)
dataset = pd.read_csv(files, header = None)
trainSet = dataset.values.tolist()
editedSet = dataset.values.tolist()
问题是我收到错误 No such file or directory: "filename"
而文件当然存在于目录中。我找到的解决方案适用于纯文本文件,而我有 CSV。对我做错了什么有什么建议吗?
谢谢
os.listdir
returns目录里面的文件列表relative
到输入路径
您需要将其与输入路径结合起来才能实际调用该文件
base_dir = r'C:\Users\User\Documents\etc...'
directory = os.listdir(base_dir)
for files in directory:
print(files)
path = os.path.join(base_dir, files)
print(path)
dataset = pd.read_csv(path, header = None)
trainSet = dataset.values.tolist()
editedSet = dataset.values.tolist()
问题是您只提供文件名作为参数。您应该改用“路径”。
有很多方法可以解决这个问题。一种现代方法是使用 pathlib 而不是 os
进行文件管理。
这是 pathlib
的解决方案。
from pathlib import Path
root_path = Path(r'C:\Users\User\Documents\etc...')
file_paths = root_path.glob('*.csv')
files = [root_path.joinpath(file_path) for file_path in file_paths]
for file in files:
print(file)
dataset = pd.read_csv(file, header = None)
trainSet = dataset.values.tolist()
editedSet = dataset.values.tolist()