Python之路——文件操作

一、常用的内置函数

>>> abs(-8)#取绝对值
8
>>> complex(2,3)#创建复数
(2+3j)
>>> divmod(5,2)#取商和余数
(2, 1)
>>> float("54")#将一个字符串或数转换为浮点数。如果无参数将返回0.0
54.0
>>> float(12)
12.0
>>> int("2")#将一个字符转换为int类型
2
>>> pow(10,4)#返回x的y次幂
10000
>>> range(10)#产生一个序列,默认从0开始,步长默认1
range(0, 10)
>>> range(1,10,2)#xrange(10):xrange()函数与range()类似,只在需要时才计算列表值,这个特性能为我们节省内存
range(1, 10, 2)
>>> round(6.2198298,3)#四舍五入,保留位
6.22
>>> sum([12,23,3])#序列求和
38
>>> oct(12)#八进制转换
'0o14'
>>> hex(12)#十六进制转换
'0xc'
>>> chr(97)#返回对应的ASCII符号
'a'
>>> bin(2)#二进制转换
'0b10'
>>> bool(0)#真假判断,布尔转换
False
>>> all([1,3,4, ])#集合中的元素都为真的时候为真,特别的,若为空串返回为True
True
>>> any([0, ])#集合中的元素有一个为真时为真,特别的,若为空串返回为False
False
>>> list("hello")#切片创建列表
['h', 'e', 'l', 'l', 'o']
>>> tuple("hello")#切片创建元组
('h', 'e', 'l', 'l', 'o')
>>> type(123)#返回类型
< class 'int'>
>>> str(123)#转换为字符串
'123'
>>> type(str(123))
< class 'str'>
>>> len("hello")#获取长度
5
>>> len(list("hello"))
5
>>> a = [1, 2, 3, 45, 5, 22, -98]
>>> max(a)
45
>>> min(a)
-98
>>> sum(a)
-20
>>> sorted(a)#升序排序
[-98, 1, 2, 3, 5, 22, 45]
>>> a
[1, 2, 3, 45, 5, 22, -98]
>>> sorted(a, reverse=True)#降序排序
[45, 22, 5, 3, 2, 1, -98]
>>> reversed(a)#顺序反转
< list_reverseiterator object at 0x0000000002F21278 >
>>> for each in reversed(a):#遍历
    print(each, end = ",")
-98, 22, 5, 45, 3, 2, 1,
>>> a
[1, 2, 3, 45, 5, 22, -98]
>>> strb = "hello"
>>> enumerate(strb)
< enumerate object at 0x000000000339A240 >
>>> for each in enumerate(strb):#组合
    print(each, end=",")
(0, 'h'), (1, 'e'), (2, 'l'), (3, 'l'), (4, 'o'),
>>> stra = "helloto"
>>> zip(a, stra)
< zip object at 0x0000000001DC0DC8 >
>>> for each in zip(a, stra):
    print(each, end=",")
(1, 'h'), (2, 'e'), (3, 'l'), (45, 'l'), (5, 'o'), (22, 't'), (-98, 'o'),
>>> c = [7, 6, 5, 4, 3, 2, 1]
>>> for each in zip(a, stra, c):
    print(each, end=",")
(1, 'h', 7), (2, 'e', 6), (3, 'l', 5), (45, 'l', 4), (5, 'o', 3), (22, 't', 2), (-98, 'o', 1),
>>> help(dir)#帮助信息

二、文件操作

打开、读、写、获取文件指针、关闭。

f1 = open("note1.py","r+",encoding="utf-8")
f2 = open("targettext1","w+",encoding="utf-8")
data_forsize = f1.read(1024)
if len(data_forsize)>0 :
    f2.write(data_forsize)
f1.seek(1024,1)#从当前位置向后偏移1024,0:起始位置;1:当前位置;2:文件末尾;偏移量可为负数,代表向前偏移
data_line = f1.readline()
if len(data_line)>0 :
    f2.write(data_line)
position = f1.tell()#获取文件指针当前位置,fileno()获取文件描述符
print("the file1 position is {},the filenumber is {}".format(position,f1.fileno()))
data = f1.readlines()#读取多行,返回列表
f2.writelines(data)#写入多行
f2.isatty()#判断是否为tty文件
f2.flush()#刷新缓存
f1.close()
f2.close()
文件读写模式:

常用模式执行操作
"r"只读模式,默认
"w"只写模式,文件不存在则自动创建,文件存在则直接覆盖
"a"读写模式,文件不存在则自动创建,文件存在则追加写入
"r+"可读写,追加写入
"w+"可读写,追加写入
"a+"读写模式,文件不存在则自动创建,文件存在则追加写入
"rb+"二进制打开文件,可读写,追加写入
"wb+"二进制打开文件,可读写,追加写入
字符编码:

所谓字符编码,就是定义了一套规则,指定了计算机中存放的这么多值中的哪个值,对应了电脑屏幕显示出来的哪个字母。

    1、ASCII,即American Standard Code for Information Interchange,美国信息交换标准代码。用单个字节共8位来表示字符,其中最高位为0,其他7位所对于的每一个值。ASCII字符集共27=128个字符 = 33个控制字符 + 95个可见字符。


    2、Unicode字符编码

    使用16位的编码空间,每个字符占用2个字节,这样理论上一共最多可以表示2^16=65536个字符,基本满足各种语言的使用。Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,所以,Unicode的实现形式包括:UTF-8/UTF-16/UTF-32.

    UTF-8就是在互联网上使用最广的一种Unicode的实现方式。UTF-8最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。

   UTF-8的编码规则很简单,只有二条:

  • 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的Unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的
  • 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的Unicode码

    3、中文字符编码标准

  • GB2312: 1980年,中国制定了GB2312-80,一共收录了 7445 个字符,包括 6763 个汉字和 682 个其它符号。在 Windows 中的代码页(Code Page)是 CP936。
  • GB13000: 1993年,国际标准Unicode 1.1版本推出,收录中国大陆、台湾、日本及韩国通用字符集的汉字,总共有20,902个。中国大陆订定了等同于Unicode 1.1版本的“GB 13000.1-93”,简称为GB13000。
  • GBK: 微软,对GB2312-80的扩展,即利用GB 2312-80未使用的编码空间,收录所有的GB 13000.1-93和Unicode 1.1之中的汉字全部字符,制定了GBK编码。GBK 收录了 21886 个符号,它分为汉字区和图形符号区。汉字区包括 21003 个字符。GBK 作为对 GB2312 的扩展,在现在的 Windows 系统中仍然使用代码页 CP936 表示,GBK 同时也向下兼容GB2312 编码。

  • GB18030: 2000年,国家出了标准GB18030-2000,简称GB18030,技术上兼容GBK而非GB13000,取代了 GBK1.0,成了正式的国家标准。该标准收录了 27484 个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。GB18030 在 Windows 中的代码页是 CP54936。


    3、编码转换

    在Python中,做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。

chart = "Hello World!"
chart.encode(encoding="utf-8").decode(encoding="utf-8")#编码解码
chart.encode(encoding="GB2312").decode(encoding="GB2312")
sys.getdefaultencoding()#获取系统默认编码方式


参考文章:

https://blog.csdn.net/vivisoul/article/details/68962137

http://www.cnblogs.com/wupeiqi/articles/4943406.html

https://blog.csdn.net/qq_34162294/article/details/53727357

https://www.cnblogs.com/pyyu/p/6702896.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值