numpy找不到临时文件

时间:2018-09-20 18:31:25

标签: python numpy temporary-files

我正在运行一个使用numpy的python CGI脚本,以从动态创建的CSV读取数据。 Numpy抱怨找不到文件,但文件在那里。从python脚本中,我可以使用system(cat)预先打印文件...

filename is: /tmp/file3aQJRn
Dump file with system(cat)...
A
-257
-1
-136
29567
-97
-8867
-27041
-12323
-17473
-659
Ask numpy to read it...
Traceback (most recent call last):
  (some lines deleted, then...)
  File "request", line 195, in get_rawcsv_column
    col_data = get_csv_column(fname,column)
  File "request", line 189, in get_csv_column
    all_data = np.genfromtxt(fname,delimiter=",")
  File "usr/lib/python3.6/site-packages/numpy/lib/npyio.py", line 1551, in genfromtxt
  File "usr/lib/python3.6/site-packages/numpy/lib/_datasource.py", line 151, in open
  File "usr/lib/python3.6/site-packages/numpy/lib/_datasource.py", line 501, in open
OSError: "/tmp/file3aQJRn" not found.

然后,我可以在bash提示符下转储文件:

# cat /tmp/file3aQJRn
A
-257
-1
-136
29567
-97
-8867
-27041
-12323
-17473
-659

我可以调用Python(3.6)和numpy来读取文件...

numpy.genfromtxt("/tmp/file3aQJRn",delimiter=",")
array([             nan,  -2.57000000e+02,  -1.00000000e+00,
        -1.36000000e+02,   2.95670000e+04,  -9.70000000e+01,
        -8.86700000e+03,  -2.70410000e+04,  -1.23230000e+04,
        -1.74730000e+04,  -6.59000000e+02])

(nan没问题。它是列标题,随后会从数组中删除它。)

这是怎么回事?临时文件由C ++应用程序使用std :: ofstream从tmpnam()获得临时文件名生成。

2 个答案:

答案 0 :(得分:0)

发件人:https://github.com/numpy/numpy/blob/master/numpy/lib/_datasource.py#L610

这似乎是numpy尝试查找文件的位置(尽管您的版本似乎有所不同)。该行之前有一条警告,指出其_findfile(path)方法将在打开的用于写入的文件上失败。我会确保您的C ++应用程序在尝试读取文件时没有打开该文件。

答案 1 :(得分:0)

这是一个愚蠢的编码错误。给出的文件名numpy实际上带有引号!