日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python输入流和输出流_python读写gbk、utf-8等输入输出流

發(fā)布時間:2023/12/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python输入流和输出流_python读写gbk、utf-8等输入输出流 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

python編碼問題:

所有使用python的都會遇到下面的問題:

Traceback (most recent call last):

File "amazon_test.py", line 30, in

print(s)

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-7: ordinal not in range(128)

解決方法

首先,你要有個通用的環(huán)境:

locale保證

LANG=zh_CN.UTF-8

LC_CTYPE="en_US.UTF-8"

LC_NUMERIC="en_US.UTF-8"

LC_TIME="en_US.UTF-8"

LC_COLLATE="en_US.UTF-8"

LC_MONETARY="en_US.UTF-8"

LC_MESSAGES="en_US.UTF-8"

LC_PAPER="en_US.UTF-8"

LC_NAME="en_US.UTF-8"

LC_ADDRESS="en_US.UTF-8"

LC_TELEPHONE="en_US.UTF-8"

LC_MEASUREMENT="en_US.UTF-8"

LC_IDENTIFICATION="en_US.UTF-8"

LC_ALL=en_US.UTF-8

具體設(shè)置:

# ~/.bashrc中添加

LANG=zh_CN.UTF-8

LANGUAGE=zh_CN:zh:en_US:en

LC_ALL=en_US.UTF-8

py文件第一行一般為#!/usr/bin/env python

第二行# -*- coding: utf-8 -*- 或者# coding=utf-8

保證文件的編碼為utf-8格式(有些人會把vim環(huán)境設(shè)置為gbk或者chinese,文件保存時可能會變成gbk格式,需要注意)

p.s. : vimrc設(shè)置推薦:

set encoding=utf-8 " 新創(chuàng)建文件格式為utf-8

set termencoding=utf-8 " 終端顯示格式,把解析的字符用utf-8編碼來進(jìn)行顯示和渲染終端屏幕

set fileencodings=utf-8,gb18030,gbk,cp936,gb2312 " 可以查看多種格式的文件

python2

解碼輸入流

讀取文件

with open(file_path, 'r') as f:

for line in f:

line = line.decode('your_file_encoding', errors='ignore').strip()

標(biāo)準(zhǔn)輸入流

for line in sys.stdin:

line = line.decode('your_file_encoding', errors='ignore').strip()

寫某編碼的文件

print >> sys.stdout, line.encode('gb18030', 'ignore')

# 或者用,推薦下面的方法

sys.stdout.write(line.encode('gb18030', 'ignore') + '\n')

python3

解碼輸入流

讀取文件

with open(file_path, mode='r', encoding='gb18030', errors='ignore') as f:

for line in f: # line is unicode string

pass

標(biāo)準(zhǔn)輸入流

import io

import sys

sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')

for line in sys.stdin:

pass

import sys

sys.stdin.reconfigure(encoding='utf-8')

for line in sys.stdin:

pass

編碼輸出

寫文件

with open(file_output, encoding='your_dest_encoding', mode='w') as f:

f.write(line)

輸出流

import sys

import io

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

sys.stdout.write(line + '\n')

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的python输入流和输出流_python读写gbk、utf-8等输入输出流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。