python将for循环结果写成数组,Python 数组循环
用python 1编码Python在多语言处理上有优势,可以处理任何当前编码的字符。在这里,python详细讨论了许多不同的语言。
需要明确的一点是,python在编码转换时会利用内部编码。转换过程请参考上图。
有两种Unicode编码。一个是UCS-2,用2个字节编码,共65536个码位;另一个是UCS-4,用4个字节编码,共2147483648个码位。
支持所有python。这是在编译时通过- enable- unicode=ucs2或-enable-unicode=ucs4指定的。那么,我们默认安装的python上决定了什么样的编码呢?一种方法是根据sys.maxunicode的值来判断:
导入sysprint sys.maxunicode
如果输出值为65535,则为UCS-2;如果输出为1114111,则编码为UCS-4。
sys # Python Idle的默认编码方法是sys.getdefaultencoding(
将字符串转换为内部编码后,请识别它不是str类型。这是unicode类型
a= aside print type(a)b=unicode(a)a," GB 2312 " print type(b))。
执行结果:
“字符串”类型“unicode”类型
2 Codecs codec-encoding:GB 2312-import Codecs,sysprint - * 60 # create GB 2312 encoder look=Codecs . lookup()create utf-8 encoder look 2=Codecs . lookup( utf-8 )a= I a #编码为内部。我的理解是将gb2312的字符串解码成unicode=look.decode (a),返回的b[0]是数据,b[1]是长度。此时,类型是Unicode或Prrod。type (b [0] encode方法是否找到了与字符串type b2=look.encode(b[0])不同的内容?转换后,字符串的长度从14变成了7!的返回长度是实际的字符数。原来的字节数是print b2[ 1],b2[0],type(b2[0])。返回上面的字符数,但这并不意味着len计算的b2[0]的长度是7,而只是14。codecs.encode将计算字符数。Python内置了读写文件的函数,用法是C和
读文件
导入后打开文件并使用close()。为了确保文件正确关闭而没有错误,我们可以使用try。最后实现以下操作:
3358 www。Sina.com/viewplaincopyprint?
Try:f=open((/path/to/file),((r)) (printf.read)(最后:IFF: f.close)) Python自动关闭。
3358 www。Sina.com/viewplaincopyprint?
pre= code class= python with open(/path/to/file), r) asf:printf.read)和之前的尝试。最终Python将内容读入内存,用str对象表示。
读取大文件时,建议使用以下方法:
3358 www。Sina.com/viewplaincopyprint?
如果没有open (/path/to/file , r) ASF: forlineinf: printline这个迭代方法不会一次将所有大文件读入内存。
二进制文件
上面的默认设置是读取文本文件。
,它是ASCII编码的文本文件。读取二进制文件,如图片、视频等。只需在“rb”模式下打开文件。
[python]查看普通副本打印?
F=open (/users/myddt/test.jpg , Rb )f . read() \ xff \ xD8 \ xff \ xe1 \ x00 \ x18 EXIF \ x00 \ x00 . #十六进制字节字符编码
要读取非ASCII编码的文本文件,必须以二进制模式打开它们,然后对它们进行解码。例如,GBK编码文件:
[python]查看普通副本打印?
F=open (/users/myddt/gbk.txt , rb) u=f.read()。decodes( gbk )uu \ u6D4b \ u8bd 5 printu测试如果每次手动转换代码太麻烦(写程序怕麻烦是好事,不怕麻烦就写很长很长。
[python]查看普通副本打印?
importcodecswithcodecs . Open(/Users/myddt/gbk.txt , r , gbk )ASF:f . read()# u \ u6d4b \ u8bd 5 打开gbk编码的文件/Users/my DDT/gbk . txt,直接读取。
写文件写文件和读文件是一样的。唯一的区别是,当调用open()函数时,传入的标识符 w 或 wb 表示写文本文件或写二进制文件:
[python]查看普通副本打印?
f=open(/Users/myddt/test.txt , w)f.write(Hello,world!)f.close()可以反复调用write()来写文件,但是一定要调用f.close()来关闭文件。我们写文件的时候,操作系统往往不会马上把数据写到磁盘,而是放在内存缓存里,等我们空闲的时候再慢慢写。只有在调用close()方法时,操作系统才保证将所有未写入的数据写入磁盘。忘记调用close()的后果是,可能只有一部分数据被写入磁盘,其余的都丢失了。因此,使用with语句仍然是安全的:
[python]查看普通副本打印?
with open(/Users/my DDT/test . txt , w)asf:f.write(Hello,world!)用特定代码编写文本文件,请参照编解码器的例子,在open()中指定用什么代码打开文件,在编写时先把要写入unicode的内容解码,即(str.decode(unicode_escape )),然后在编写()时,编解码器会自动把内容转换成指定的代码,写入文件。
读写文件是最常见的IO操作。Python内置了读写文件的函数,用法兼容c。
读文件
打开一个文件,读完后要关闭()。为了确保无论是否有错误都可以正确关闭文件,我们可以使用try.最终实现这一点:
[python]查看普通副本打印?
try:f=open(/path/to/file , r )printf . read()finally:IFF:f . close()
Python引入了with语句为我们自动调用close()方法:
[python]查看普通副本打印?
prename= code class= python with open(/path/to/file , r)asf:printf.read()
这与之前的尝试相同.最后,但是代码更好更简洁,不需要调用f.close()方法。调用read()方法一次性读取文件的所有内容。Python将内容读入内存,并用str对象表示它们。
当读取大文件时,建议采用以下方式:
[python]查看普通副本打印?
withopen(/path/to/file , r)asf:forlineinf:printline
这种迭代方法不会一次将所有大文件读入内存。
二进制文件
上面提到的默认是读取文本文件,而且是ASCII编码的文本文件。读取二进制文件,如图片、视频等。只需在“rb”模式下打开文件。
[python]查看普通副本打印?
F=open (/users/myddt/test.jpg , Rb )f . read() \ xff \ xd8 \ xff \ xe1 \ x00 \ x18 EXIF \ x00 \ x00 . #十六进制字节
字符编码
要读取非ASCII编码的文本文件,必须以二进制模式打开它们,然后对它们进行解码。例如,GBK编码文件:
[python]查看普通副本打印?
F=open (/users/myddt/gbk.txt , rb) u=f.read()。decode( gbk )uu \ u6d4b \ u8bd 5 printu测试
如果每次手动转换代码太麻烦的话(写一个怕麻烦的程序是好事,不怕麻烦的话你会写一个又长又难懂又维护不了的代码),Python还提供了一个编解码器模块,帮助我们在读取文件时自动转换代码,直接读出unicode:
[python]查看普通副本打印?
importcodecswithcodecs . open(/Users/my DDT/gbk . txt , r , gbk )ASF:f . read()# u \ u6d4b \ u8bd 5
用gbk代码打开文件/Users/myddt/gbk.txt,读取后会直接自动转换成python中的unicode代码。
写文件
写文件和读文件是一样的。唯一的区别是,当调用open()函数时,传入的标识符“w”或“wb”表示写入文本文件或写入二进制文件:
[python]查看普通副本打印?
f=open(/Users/myddt/test.txt , w)f.write(Hello,world!)f .关闭()
可以反复调用write()来写文件,但是一定要调用f.close()来关闭文件。我们写文件的时候,操作系统往往不会马上把数据写到磁盘,而是放在内存缓存里,等我们空闲的时候再慢慢写。只有在调用close()方法时,操作系统才保证将所有未写入的数据写入磁盘。忘记调用close()的后果是,可能只有一部分数据被写入磁盘,其余的都丢失了。因此,使用with语句仍然是安全的:
[python]查看普通副本打印?
with open(/Users/my DDT/test . txt , w)asf:f.write(Hello,world!)
要用特定的编码写一个文本文件,请以编解码器为例,在open()中指定用什么编码打开文件,在写入时先把要写入unicode的内容解码,即,(str.decode(unicode_escape )),然后在写入()时,编解码器会自动把内容转换成指定的编码写入文件。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。