整理一些小知识点

随机更新

自启动目录

是登录自己用户时才能开机启
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('输入有误')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值