整理一些小知识点

xiaoxiao2021-02-28  43

随机更新

自启动目录

是登录自己用户时才能开机启 C:\Users\Night\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 把文件拷贝进去 登录所有用户时都能开机启动 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

在文件操作中 :r 和 rb的区别

读文件 进行读文件操作时,直到读到文档结束符(EOF)才算读取到文件最后,Python会认为字节\x1A(26)转换成的字符为文档结束符(EOF), 故使用’r’进行读取二进制文件时,可能会出现文档读取不全的现象。

示例: 二进制文件中存在如下从低位向高位排列的数据:7F 32 1A 2F 3D 2C 12 2E 76 如果使用’r’进行读取,则读到第三个字节,即认为文件结束。 如果使用’rb’按照二进制位进行读取的,不会将读取的字节转换成字符,从而避免了上面的错误。

解决方案: 二进制文件就用二进制方法读取’rb’

总结: 使用’r’的时候,如果碰到’0x1A’,就视为文件结束,就是EOF。使用’rb’则不存在这个问题,

即:如果你用二进制写入再用文件读出的话,如果其中存在’0x1A’,就只会读出文件的一部分, 使用’rb’会一直读取文件末尾。

3、写文件 对于字符串x=’abc\ndef’,我们可用len(x)得到它的长度为7,\n我们称之为换行符,实际上是0x0A。当我们用’w’即文本方式写的时候,在windows平台上会自动将’0x0A’变成两个字符’0x0D’,’0x0A’,即文件长度实际上变成8。当用’r’文本方式读取时,又自动的转换成原来的换行符。 如果换成’wb’二进制方式来写的话,则会保持一个字符不变,读取的时候也是原样读取。 所以如果用文本方式写入,用二进制方式读取的话,就要考虑这多出的一个字节了。’0x0D’也称回车符。 Linux下不会变,因为linux只使用’0X0A’来表示换行。


python3 中 encode() decode() 默认utf-8格式 utf-8 的一些写法

utf8 utf-8

文件读取

class FileHandle: def __init__(self, filename, mode, encoding = None): self.filename = filename self.file_handle = open(self.filename, mode, encoding = encoding) def write_file(self, content): '''文件写入''' self.file_handle.write(content) def read_file(self): '''文件读取''' for i in self.file_handle: yield i def __del__(self): self.file_handle.close()

利用反射和 _ _ doc _ _ 直接拿到方法名 并调用

def __inner(self, obj, li, r): '''私有方法 显示权限方法并调用''' ''' obj 对象 li 所有的自己写的方法 即 没有双下的方法 r 对应的类 ''' while 1: # 拿到 所有自己写的 方法的注释 进行展示 for k, i in enumerate((getattr(r, i).__doc__ for i in li)): print(k, i) change = input('输入选择的序号>>>') if change.isdigit() and int(change) in range(len(li)): getattr(r, li[int(change)])(obj) # 通过反射 拿到 对应类中的方法 并把对象(self)传入 elif change.upper() == 'Q': break else:print('输入有误')
转载请注明原文地址: https://www.6miu.com/read-1600343.html

最新回复(0)