Python3

常用工具

1. 命令行快速搭建本地http服务器

python3 -m http.server 8000

在命令行中输入此命令,就会在当前目录下搭建http服务器,可以通过访问http://localhost:8000/查看,
这样就可以用同一网段的设备从这个http服务器下载文件

2. python在程序里获取当前文件名

sys.argv[0]

3. 十六进制字符串转bytes

bytes.fromhex("1a2b3c4d5e6f7a8b")

4. string 转 bytes

"12345678aa".encode('utf8')

5. bytes 转 int

int.from_bytes(b'1122aa','big') ('big'-大端,'little'-小端)

6. AES-CBC-128

from Crypto.Cipher import AES
import base64
key = bytes.fromhex("11223344556677881122334455667788")
iv = "1234567812345678".encode("utf-8")
buffer = "HelloWorld".encode('utf8')
buffer = buffer + b'000000'  # 填充到16的整数倍
cryptor = AES.new(key, AES.MODE_CBC,iv)
encDate = cryptor.encrypt(buffer)
print("Enc: {0}".format(base64.b64encode(encDate)))
cryptor2 = AES.new(key, AES.MODE_CBC,iv)  # 此处必须重新定义一个解密对象,如果使用上面的cryptor进行解密,会报错 decrypt() cannot be called after encrypt()
decDate = cryptor2.decrypt(encDate)
print(decDate)

7. 计算文件的MD5

import hashlib

def get_file_md5(file_path):
    """
    获取文件md5值
    :param file_path: 文件路径名
    :return: 文件md5值
    """
    with open(file_path, 'rb') as f:
        md5obj = hashlib.md5()
        md5obj.update(f.read())
        _hash = md5obj.hexdigest()
    return str(_hash).upper()  # upper()转为大写

转自https://www.cnblogs.com/Cong0ks/p/11364660.html

校验文件:

#coding=utf-8  
import hashlib  
import sys  

if len(sys.argv) == 3:  
    try:  
        if(sys.argv[2].lower() == 'md5'):  
            print (hashlib.md5(open(sys.argv[1],'rb').read()).hexdigest()  )
        elif(sys.argv[2].lower() == 'sha-1'):  
            print (hashlib.sha1(open(sys.argv[1],'rb').read()).hexdigest()  )
        elif(sys.argv[2].lower() == 'sha-256'):  
            print (hashlib.sha256(open(sys.argv[1],'rb').read()).hexdigest()  )
        elif(sys.argv[2].lower() == 'sha-512'):  
            print (hashlib.sha512(open(sys.argv[1],'rb').read()).hexdigest()  )
        else:  
            print ('[-]Please input a correct encryption algorithm.'  )
    except:  
        print ('[-]Please input a correct filename.'  )
else:  
    print ('[*]Usage: python check_hash.py [Filename] [MD5|SHA-1|SHA-256|SHA-512]' )

转自https://blog.csdn.net/diyiday/article/details/80579547

8. os

需要在python文件头部引用os:
import os
判断文件是否存在:
os.path.exists(filePath) # 存在返回True;不存在返回False
由路径获取文件名:
os.path.basename(filePath) # C:/xxx/aaa.txt -> aaa.txt
删除文件:
os.remove(filePath)

9. filetype判断文件类型

安装:
pip3 install filetype
filetype支持的文件类型:
M3gp | Mp4 | M4v | Mkv | Mov | Avi | Wmv | Mpeg | Webm | Flv | Dwg | Xcf | Jpeg | Jpx | Png | Gif | Webp | Tiff | Cr2 | Bmp | Jxr | Psd | Ico | Heic | Dcm | Aac | Midi | Mp3 | M4a | Ogg | Flac | Wav | Amr | Woff | Woff2 | Ttf | Otf | Br | Rpm | Epub | Zip | Tar | Rar | Gz | Bz2 | SevenZ | Pdf | Exe | Swf | Rtf | Nes | Crx | Cab | Eot | Ps | Xz | Sqlite | Deb | Ar | Z | Lzop | Lz | Elf | Lz4 | Wasm
判断示例:

import filetype
#判断是不是需要的视频类型
def isVideo(filepath):
    videoList = ["mp4", "m4v", "mkv", "webm", "mov", "avi", "wmv", "mpg", "flv"]
    try:
        fileTP = filetype.guess(filepath).extension
        if fileTP in videoList:
            return True
        else:
            return False
    except:
        return False

10. json 和 str 互转

import json
a = '{"name":"brian", "age":"sec"}'
#json->str
b = json.loads(a)
print(type(b)) # <class 'dict'>
print(b) # {'name': 'brian', 'age': 'sec'}
#str->json
c = json.dumps(b)
print(type(c)) # <class 'str'>
print(c) # {"name": "brian", "age": "sec"}

故障处理

1. BlockingScheduler报错 apscheduler/util.py:95: PytzUsageWarning: The zone attribute is specific to pytz's interface;

添加时区:

from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler(timezone="Asia/Shanghai")

相关文章: