Python netCDF4的Dataset中文字符出错的问题

NC文件的路径中存在中文字符的解决办法

我使用netcdf4打开nc文件。 但是在文件路径中,有中文字符,并且netCDF4.Dataset返回错误:“无此文件或目录”。 但是,如果我使用“ os.path.isfile”,则会找到该文件。 我试图解码,编码(在utf-8中)但是仍然找不到路径。 我的错误如下:

[Errno 2] No such file or directory: b'H:/LNHCourse/\xe6\xb5\xb7\xe6\xb4\x8b\xe6\x8e\xa2\xe6\xb5\x8b\xe6\x8a\x80\xe6\x9c\xaf\xe4\xb8\x93\xe9\xa2\x98\xe5\xae\x9e\xe9\xaa\x8c/\xe4\xb8\x93\xe9\xa2\x98\xe5\xae\x9e\xe9\xaa\x8c\xe5\x85\xab/V2019151040600.L2_SNPP_OC.nc'

我查阅了很多的论坛仍没找到合适的解决办法,最终我在github上面进行提问,有一位外国朋友帮助我解决了这个问题。这位外国朋友认为,这是Windows文件名编码的问题,并且他可以使用此文件名创建文件,然后在macOS X和Linux上读取。”

由于文件访问是系统问题,因此文件名不属于HDF5的UTF-8功能范围; 文件名在系统级别编码。 Linux和Mac OS系统通常正确处理UTF-8编码的文件名,而Windows系统通常不正确。下面的代码是它提供给我的解决方案。

import netCDF4, os
dirpath1 =\
b'\xe6\xb5\xb7\xe6\xb4\x8b\xe6\x8e\xa2\xe6\xb5\x8b\xe6\x8a\x80\xe6\x9c\xaf\xe4\xb8\x93\xe9\xa2\x98\xe5\xae\x9e\xe9\xaa\x8c'.decode('utf-8')
dirpath2 =\
b'\xe4\xb8\x93\xe9\xa2\x98\xe5\xae\x9e\xe9\xaa\x8c\xe5\x85\xab'.decode('utf-8')
dirpath = os.path.join(dirpath1,dirpath2)
os.makedirs(dirpath,exist_ok=True)
os.chdir(dirpath)
filename='V2019151040600.L2_SNPP_OC.nc'
print(filename)
nc = netCDF4.Dataset(filename,'w')
nc.filename = filename
nc.close()
nc = netCDF4.Dataset(filename)
print(os.getcwd)
print(nc.filename)

在这种情况下,一种简单的解决方法(因为中文字符位于目录名称中,而不是文件名本身)是在python中创建目录,更改工作目录,然后在该目录中创建文件。

如果大家想具体的查看问题的内容,请参考下面的连接:

https://github.com/Unidata/netcdf4-python/issues/997
https://support.hdfgroup.org/HDF5/doc/Advanced/UsingUnicode/index.html

欢迎大家在我的账号下面留言

https://github.com/LiNinghui-AI

发布了13 篇原创文章 · 获赞 35 · 访问量 1688

猜你喜欢

转载自blog.csdn.net/luqialiu3392/article/details/104793398
今日推荐