解决问题:

1、在系统默认编码为ASCII的系统中,保存中文到文件是乱码:“UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe7 in position 7: ordinal not in range(128)"
2、在window和linux文件路径分隔符不相同,同一个脚本在不同系统找不到对应路径/文件

编码格式问题处理:

import sys

# 如果系统默认编码为ascii,则设置编码格式为utf8
if sys.getdefaultencoding() == 'ascii':
   reload(sys)
   # 因为解释器启动时默认编码为ascii,只有重新加载sys后,再设置编码格式才会生效
   sys.setdefaultencoding('utf8')

系统路径分隔符

import re
import os

def SepChange(Path):
   '''
   路径分隔符替换
   :param Path: 路径
   :return: 替换过系统分隔符的路径
   '''
   if re.search('/',path):
      path = Path.replace('/',os.sep)
   elif re.search(r'\\',path):
      path = Path.replace(r'\\',os.sep)
   else:
      pass
   return path

完整的SysEncoding.py文件内容:

# coding:utf-8
'''
Note:
   更换路径间隔符
   更换编码格式为'utf-8'
Author:Qred
Date:2019/8/20
'''
import re
import os
import sys

if sys.getdefaultencoding() == 'ascii':
   reload(sys)
   sys.setdefaultencoding('utf8')

def SepChange(Path):
   '''
   路径分隔符替换
   :param Path: 路径
   :return: 替换过系统分隔符的路径
   '''
   if re.search('/',path):
      path = Path.replace('/',os.sep)
   elif re.search('\\',path):
      path = Path.replace('\\',os.sep)
   else:
      pass
   return path

在需要进行编码格式的脚本头部引入该文件,即可实现ascii转utf8的变换。
如果脚本中涉及不通操作系统的文件路径转换,可以调用SepChange实现文件路径的快速转换。

GitHub 加速计划 / li / linux-dash
13
2
下载
A beautiful web dashboard for Linux
最近提交(Master分支:4 个月前 )
186a802e added ecosystem file for PM2 5 年前
5def40a3 Add host customization support for the NodeJS version 5 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐