在ubuntu下,用tar解压https://arxiv.org/src/1711.03378 这个论文的source压缩包(arXiv-1711.03378v1.tar.gz),解压后出现一个俄文的目录,但是在ubuntu下看到是乱码,同时python直接打印会报错
报错示例代码如下
from pathlib import PurePosixPath, Path folder_path = "/nas2/arxiv/disk3/arxiv_debug" folder_path = Path(folder_path) file_list = folder_path.rglob("**/*.*") for file_path in file_list: print(file_path)
报错信息
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 64-67: surrogates not allowed
发现是python在print时调用了str方法,会尝试把path转码成utf8编码,但是转码不成功则报错。而操作系统本身,当发现不是utf8编码时,直接就存储了原始字符串。所以一个简单的解决办法是使用repr方法,即:
print(repr(file_path))