相关疑难解决方法(0)

什么是python"with"语句专为什么设计的?

with今天第一次遇到了Python 语句.我已经使用Python几个月了,甚至不知道它的存在!鉴于其地位有点模糊,我认为值得问:

  1. 什么是with设计用于的Python 语句?
  2. 你用它来做什么?
  3. 是否有任何我需要注意的问题,或与其使用相关的常见反模式?任何try..finally比它更好用的情况with
  4. 为什么它的使用范围更广?
  5. 哪些标准库类与它兼容?

python language-features with-statement

396
推荐指数
7
解决办法
9万
查看次数

在H5PY中打开文件时出错(未找到文件签名)

我一直在使用以下代码来打开一些HDF5文件,在MATLAB中使用H5PY在python中生成:

import h5py as h5
data='dataset.mat'
f=h5.File(data, 'r')
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

OSError: Unable to open file (File signature not found)
Run Code Online (Sandbox Code Playgroud)

我已经检查过我要打开的文件是版本7.3 MAT文件并且是HDF5格式.事实上,我之前使用H5PY成功打开了相同的文件.我已经确认文件存在且可访问,因此我不确定错误的来源.任何建议将不胜感激,提前感谢:)

python matlab h5py

23
推荐指数
2
解决办法
2万
查看次数

创建 HDF5 文件时损坏文件而不关闭它们 (h5py)

我正在使用 h5py 将实验数据存储在 HDF5 容器中。

在交互式会话中,我使用以下命令打开文件:

measurement_data = h5py.File('example.hdf5', 'a')
Run Code Online (Sandbox Code Playgroud)

然后我使用一些自己编写的函数将数据写入文件(可以是几天实验中的许多 GB 数据)。在实验结束时,我通常会使用

measurement_data.close()
Run Code Online (Sandbox Code Playgroud)

不幸的是,有时会发生交互式会话在没有我明确关闭文件的情况下结束(意外终止会话、断电、由于某些其他软件导致操作系统崩溃)。这总是会导致文件损坏和完整数据丢失。当我尝试打开它时,出现错误:

OSError: Unable to open file (File signature not found)
Run Code Online (Sandbox Code Playgroud)

我也无法在 HDFview 或我尝试过的任何其他软件中打开该文件。

  1. 即使文件没有明确关闭,有没有办法避免损坏的文件?我在此处阅读了有关使用 with 语句的信息,但是当会话意外结束时,我不确定这是否会有所帮助。
  2. 我可以以某种方式恢复损坏文件中的数据吗?有维修程序吗?

每次写访问时总是打开和关闭文件对我来说听起来很不利,因为我不断地从许多不同的函数和线程写入数据。所以我会更满意不同的解决方案。

python corruption h5py

6
推荐指数
1
解决办法
5470
查看次数

python h5py文件读取为“ OSError:无法打开文件(错误的超级块版本号)”

简短的介绍

我有一个问题,其中hdf5文件已在Windows计算机上写入,而无法在Linux计算机上打开。错误消息是“ OSError:无法打开文件(错误的超级块版本号)”。(因此,此问题可能根本与h5py不相关,而是在python文件打开中出现的一般linux / windows兼容性问题)。

详细描述

Windows和Linux均使用了具有以下软件包的python虚拟环境:

  • Flask-0.12.2
  • 烧瓶RESTful-0.3.6
  • 金雅2-2.10
  • 标记安全1.0
  • Werkzeug-0.14.1
  • aniso8601-3.0.0
  • 点击6.7
  • h5py-2.7.1
  • h5py-cache-1.0
  • itsdangerous-0.24
  • 锁文件-0.12.2
  • numpy-1.14.0
  • pytz-2018.3
  • 六-1.11.0

在Windows上,可以打开并读取文件而不会出现问题,但是在Linux上,则不能打开,并抛出OSError。只需启动一个新的python会话并键入以下命令就足够了:

导入h5py

f1 = h5py.File(“ myfile.hdf5”,“ r”)

完整错误:

追溯(最近一次通话):

文件“ stdin”,第1行,在模块中

_ _ init_ _中的文件“ /usr/local/lib/python3.6/site-packages/h5py/_hl/files.py”,第312行

fid = make_fid(name, mode, userblock_size, fapl, swmr=swmr)
Run Code Online (Sandbox Code Playgroud)

在make_fid中的文件“ /usr/local/lib/python3.6/site-packages/h5py/_hl/files.py”,第142行

fid = h5f.open(name, flags, fapl=fapl)
Run Code Online (Sandbox Code Playgroud)

在h5py._objects.with_phil.wrapper中的文件“ h5py / _objects.pyx”第54行

在h5py._objects.with_phil.wrapper中的文件“ h5py / _objects.pyx”,第55行

在h5py.h5f.open中的文件“ h5py / h5f.pyx”,第78行

OSError:无法打开文件(错误的超级块版本号)

HDF5文件是使用无法在Windows Java计算机上使用Java HDF5库编写的程序通过SWMR(单写,多读取器)模式下的hdf5 java 1.10.0编写的。

在进一步将文件发送到我的程序(轻量级Linux应用程序)之前,该程序可能无法正确关闭文件。

http://web.mit.edu/fwtools_v3.1.0/www/H5.format.html中,“超级块的版本号”描述如下...

此值用于确定超级块中信息的格式。当超级块中信息的格式更改时,版本号将递增到下一个整数,并可用于确定超级块中信息的格式。

为此字段定义了0和1的值。

该字段存在于超级块的版本0+中。

...这无助于我理解错误的超级块版本号错误可能是什么。

这是我要打开的示例文件:https : …

python linux windows hdf5 h5py

5
推荐指数
1
解决办法
3490
查看次数