使用“with open”和“project-lib”访问 Watson Studio 笔记本(.log 文件)中的资产

Posted

技术标签:

【中文标题】使用“with open”和“project-lib”访问 Watson Studio 笔记本(.log 文件)中的资产【英文标题】:Accessing asset in Watson Studio notebook (.log file) using 'with open' and 'project-lib' 【发布时间】:2020-11-24 09:55:15 【问题描述】:

我正在尝试在 Watson Studio(云)中部署一个正常工作的 python 3.6 笔记本。但是我正在努力访问文件/资产。 将 .log 文件上传到我的资产后,我想使用

打开并处理它
with open(project.get_file('messages.log'), 'r') as file:

错误信息返回

TypeError: expected str, bytes, or os.PathLike object, not _io.BytesIO

除了告诉我如何打开/读取日志文件之外,我还希望简要解释一下为什么 project.get_file 返回一个 BytesIo 对象。

【问题讨论】:

【参考方案1】:

project-lib 的函数 get_file 从 Watson Studio 项目的存储中读取文件。 你可以像这样阅读你的文件:

buffer = project.get_file('messages.log')
log_file = buffer.getvalue()

我不确定为什么决定返回一个 BytesIo 对象,但它非常方便,例如如果您想将数据读入 pandas 数据框:

my_file = project.get_file('myFile.csv')
my_file.seek(0)
import pandas as pd
pd.read_csv(my_file, nrows=10)

您可以在此处找到project-lib 的文档:project-lib for Python

【讨论】:

谢谢西蒙娜。不幸的是,这不能正常工作。尽管正在创建对象 log_file,但它是空的。另外,请注意,我正在尝试使用 open 函数,这会导致所描述的错误。我可以将字节对象转换为字符串对象(我已经这样做了),但无论如何,该对象是空的/不包含日志信息。

以上是关于使用“with open”和“project-lib”访问 Watson Studio 笔记本(.log 文件)中的资产的主要内容,如果未能解决你的问题,请参考以下文章

Python中open和with open有什么区别?怎么用?

使用with open语句(未完)

区别 |Python的 open() 和with open() as

软件测试中,python 中 open与with open 的区别?

python3 文件操作with open()方法用法解析

使用“with open”和“project-lib”访问 Watson Studio 笔记本(.log 文件)中的资产