我正在 Linux 上开发一个小型 Python 应用程序,其中代码在系统 Python3 和 Anaconda Python3 解释器上运行良好。但是,当我在 Anaconda/Windows 上运行它时,我得到了这个回溯:
Traceback (most recent call last):
File "C:\Users\<redacted>\AppData\Local\Continuum\anaconda3\lib\tkinter\__init__.py"
, line 1699, in __call__
return self.func(*args)
File "./dataView.py", line 312, in doChop
self.DA.chop()
File "C:\Users\<redacted>\DataAnalyser.py", line 212, in chop
self.df.to_hdf( filename, mode='w', key=hdfKey, data_columns = view )
File "C:\Users\<redacted>\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas
\core\generic.py", line 1471, in to_hdf
return pytables.to_hdf(path_or_buf, key, self, **kwargs)
File "C:\Users\<redacted>\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas
\io\pytables.py", line 280, in to_hdf
complib=complib) as store:
File "C:\Users\<redacted>\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas
\io\pytables.py", line 467, in __init__
self.open(mode=mode, **kwargs)
File "C:\Users\<redacted>\AppData\Local\Continuum\anaconda3\lib\site-packages\pandas
\io\pytables.py", line 580, in open
self._handle = tables.open_file(self._path, self._mode, **kwargs)
File "C:\Users\<redacted>\AppData\Local\Continuum\anaconda3\lib\site-packages\tables
\file.py", line 320, in open_file
return File(filename, mode, title, root_uep, filters, **kwargs)
File "C:\Users\<redacted>\AppData\Local\Continuum\anaconda3\lib\site-packages\tables
\file.py", line 784, in __init__
self._g_new(filename, mode, **params)
File "tables\hdf5extension.pyx", line 487, in tables.hdf5extension.File._g_new
tables.exceptions.HDF5ExtError: HDF5 error back trace
File "C:\Users\builder\mc3\conda-bld\hdf5_1506030377716\work\src\H5F.c", line
491, in H5Fcreate
unable to create file
File "C:\Users\builder\mc3\conda-bld\hdf5_1506030377716\work\src\H5Fint.c", li
ne 1247, in H5F_open
unable to open file: time = Wed Feb 28 18:26:31 2018
, name = 'chop_x:0:49.hdf5', tent_flags = 13
File "C:\Users\builder\mc3\conda-bld\hdf5_1506030377716\work\src\H5FD.c", line
809, in H5FD_open
open failed
File "C:\Users\builder\mc3\conda-bld\hdf5_1506030377716\work\src\H5FDsec2.c",
line 346, in H5FD_sec2_open
unable to open file: name = 'chop_x:0:49.hdf5', errno = 22, error message =
'Invalid argument', flags = 13, o_flags = 302
End of HDF5 error back trace
Unable to open/create file 'chop_x:0:49.hdf5'
我尝试在 Anaconda/Win ipython3 中手动写入一个完全相同名称的文件,效果也很好。我还尝试将名称更改为一个简单的字符串,这有效,这表明我传递的使用 str.format() 构造的文件名值确实有问题。另一方面,当我这样做时df.to_hdf('chop_x:0:49.hdf5', 'w', 'chop')
效果很好。我如何才能看到我传递的参数有什么问题?您认为是另一个参数的问题吗?
最佳答案
不同的操作系统对于路径和文件名中允许的字符有不同的限制。
尝试在 Windows 资源管理器中创建一个带有 :
的文件名,您就会明白为什么它不起作用。
Naming Files, Paths, and Namespaces
避免使用:
< (less than) > (greater than) : (colon) " (double quote) / (forward slash) \ (backslash) | (vertical bar or pipe) ? (question mark) * (asterisk)
Integer value zero, sometimes referred to as the ASCII NUL character. Characters whose integer representations are in the range from 1 through 31, except for alternate data streams where these characters are allowed.
(摘自上面的链接,里面还有更多内容,请阅读。)
关于Windows 操作系统无法打开适用于 linux 的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49094634/