【问题标题】:Is there a way to read data from csv using numpy.genfromtxt from a given directory?有没有办法使用给定目录中的 numpy.genfromtxt 从 csv 读取数据?
【发布时间】:2021-11-20 16:04:21
【问题描述】:

我应该通过 argparse 读取 csv 文件路径。例如,csv 文件的路径是 args.X,我该如何将这些数据加载到 2d numpy 数组中?现在我使用的是Data = np.genfromtxt(args.X, delimiter=","),这在 args.X 包含文件名而不是路径并且文件与 python 脚本位于同一文件夹中时有效。当数据不在同一个文件夹中并且我获得了文件的路径时如何读取?

【问题讨论】:

  • 它会抛出任何错误吗?是FileNotFoundError
  • 我的路径是 D:\Amit\ell409\2019anz1787\gaussian.csv 作为输入,错误是“D:Amitell4092019anz1787gaussian.csv not found”
  • 这不是 Windows 中的有效路径...我想你的意思是 D:\\Amitell4092019anz1787gaussian.csv 对吧?
  • 所有反斜杠都被杀死了。我会更新我的答案

标签: python numpy csv input argparse


【解决方案1】:

您似乎遇到了反斜杠消失的问题,这很奇怪。无论如何,您最好告诉 argparse 您想要一个 Path 对象(并使用一个)。你可能想要这样的代码:

import numpy as np
from pathlib import Path
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("IN", type=Path)
parser.parse_args()

inf = args.IN.expanduser().resolve()
if not inf.exists():
    raise FileNotFoundError(f"No such file: {inf}")
Data = np.genfromtxt(inf, delimiter=",")

【讨论】:

  • 谢谢!这行得通
  • 如果确实如此,请随意接受 :) 作为在黑暗中的镜头,我认为某些字符串转义出了问题,因为您在错误消息中缺少 any 斜杠。但通常使用 Path 作为路径,它要容易得多
  • 是的,事实证明,由于某些转义序列,斜线被丢弃
猜你喜欢
  • 2012-06-22
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
  • 2014-09-16
  • 2019-10-14
  • 1970-01-01
  • 2022-01-16
  • 2019-09-26
相关资源
最近更新 更多