Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中指定文件路径时出错_Python - Fatal编程技术网

在Python中指定文件路径时出错

在Python中指定文件路径时出错,python,Python,我是python新手,对它不太了解。 我想修改在线代码,将我的图像数据转换为lmdb格式 我给出了src和dst的根,如下所示: 路径\u src='F:\caffe windows\caffe windows\data\sift flow\test' path_dst='F:\caffe windows\caffe windows\data\sift flow\testlmdb' 但是在我运行代码之后,我得到了一个错误。看来我的路错了?有人能帮忙吗?我也附上代码 import os impor

我是python新手,对它不太了解。 我想修改在线代码,将我的图像数据转换为lmdb格式

我给出了src和dst的根,如下所示: 路径\u src='F:\caffe windows\caffe windows\data\sift flow\test' path_dst='F:\caffe windows\caffe windows\data\sift flow\testlmdb'

但是在我运行代码之后,我得到了一个错误。看来我的路错了?有人能帮忙吗?我也附上代码

import os
import numpy as np
from scipy import io
import lmdb
import caffe
from PIL import Image

NUM_IDX_DIGITS = 10
IDX_FMT = '{:0>%d' % NUM_IDX_DIGITS + 'd}'

print '1111'

paths_src = 'F:\\caffe-windows\\caffe-windows\\data\\sift-flow\\test\\'
path_dst = 'F:\\caffe-windows\\caffe-windows\\data\\sift-flow\\testlmdb'

print '2222'

def img_to_lmdb(paths_src,path_dst):
    in_db = lmdb.open(path_dst, map_size=int(1e9))
    with in_db.begin(write=True) as in_txn:
        for in_idx, in_ in enumerate(paths_src):
            print 'img:::'+str(in_)
            # load image:
            # - as np.uint8 {0, ..., 255}
            # - in BGR (switch from RGB)
            # - in Channel x Height x Width order (switch from H x W x C)
            im = np.array(Image.open(in_)) # or load whatever ndarray you need
            im = im[:,:,::-1]
            im = im.transpose((2,0,1))
            im_dat = caffe.io.array_to_datum(im)
            in_txn.put('{:0>10d}'.format(in_idx), im_dat.SerializeToString())
    in_db.close()



img_to_lmdb(paths_src,path_dst)
print '3333'

我不熟悉此库,但您的问题从这一行开始-
对于in\u idx、in\u in枚举(路径\u src):

因为paths_src是一个字符串,它是可写的,所以内置函数enumerate只需遍历该字符串中的每一个字符,因此第一项将是字母“F”,而不是整个路径。 您应该做的是将路径\u src定义为一个列表。因此,不是:

paths_src = 'F:\\caffe-windows\\caffe-windows\\data\\sift-flow\\test\\'
你应该做:

paths_src = ['F:\\caffe-windows\\caffe-windows\\data\\sift-flow\\test\\']

希望我能帮上忙。

嗨,谢谢你的帮助。我尝试了你的建议,但是得到了一个新的错误:文件系统路径必须是Unicode或字节。你能复制StActTrac吗?(P.S.你应该把路径放在列表中,就像我说的,这只是我们需要解决的另一个错误。)我应该把我的所有图像路径放在列表中,就像C++中的向量一样。我对python完全陌生,所以…不知道怎么做。。。我稍后再试谢谢你的帮助!