python2.7更改編碼類型、根據系統替換分隔符

解決問題:

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實現文件路徑的快速轉換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章