繁体   English   中英

Pytest tmpdir_factory 抛出错误“预期的二进制或 unicode 字符串,得到本地”

Pytest tmpdir_factory threw an error “Expected binary or unicode string, got local”

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在使用pytest对将数据拆分为机器学习问题的训练、验证和测试集进行测试。 我使用tmpdir_factory创建临时文件,但它给我一个错误,比如TypeError: Expected binary or unicode string, got local('/tmp/pytest/pytest-4/test_folder0/train.tfrecord') 这是我的代码:

conftest.py

DATA_FOLDER = 'test_folder'

@pytest.fixture(scope="session")
def train_dataset(tmpdir_factory):
    return tmpdir_factory.mktemp(DATA_FOLDER).join('train.tfrecord')

@pytest.fixture(scope="session")
def val_dataset(tmpdir_factory):
    return tmpdir_factory.mktemp(DATA_FOLDER).join('val.tfrecord')

@pytest.fixture(scope="session")
def test_dataset(tmpdir_factory):
    return tmpdir_factory.mktemp(DATA_FOLDER).join('test.tfrecord')

在测试文件中:

def test_split(train_dataset, val_dataset, test_dataset):
    # the arguments of split_function refer to the path where the splitting results is written
    split_function(train_dataset, val_dataset, test_dataset)
    """continue with assert functions"""

有人可以帮忙吗? 谢谢

1 个回复

tmpdir_factory夹具方法返回一个py.path.local对象,它封装了一个路径(有点pathlib.Path )。 因此,可以将这些方法调用链接起来以操纵路径,就像在您的装置中使用mktemp().join()所做的那样。 要从结果中取回str路径,您必须明确地将py.path.local转换为str

@pytest.fixture(scope="session")
def train_dataset(tmpdir_factory):
    return str(tmpdir_factory.mktemp(DATA_FOLDER).join('train.tfrecord'))

当你的测试功能,不知道py.path.local ,通过转换创建的路径tmpdir_factorystr一般是使用这种灯具的方式。

2 预期的二进制或unicode字符串,得到0.0

我正在使用TensorFlow训练我的第一个模型,但是我一直遇到这个错误: 预期的二进制或unicode字符串,得到0.0 我遵循了TensorFlow线性模型教程( https://www.tensorflow.org/tutorials/wide ),并将其应用于我自己的数 ...

6 Tensorflow分类数据与词汇表 - 预期的二进制或Unicode字符串,得到[0,1,2,...]

我是机器学习的新手(刚刚完成了Google机器学习速成课程),并认为在Kaggle比赛中尝试我的手是一个很好的起点,可以解决一些问题。 我正在使用Tensorflow和Python 3,所有这些都是最新的(Kaggle在线Jupyter笔记本) 数据的格式如下所示 我创建了一个词 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM