跳转至

内置模块

https://docs.python.org/zh-cn/3.9/library/index.html

random

import random

# 随机浮点数
random.random()  # 0.5842210741472511
random.uniform(10,20)  # 14.802146907481868

# 随机整数
random.randint(1,10)  # 7

# 在等差数列中随机选一个数
random.randrange(0, 101, 2)  # 随机偶数
_list = ['a', 'b', 'c', 'd']

# 随机打乱更新list元素的顺序
random.shuffle(_list)  # ['b', 'c', 'd', 'a']

# 从一个非空序列中随机选出1个str
random.choice(_list)  # "a"

# 从一个非空序列中随机出n个元素,不过以list格式返回
random.sample(_list, 2)  # ['b', 'd']

import string
"""
string.ascii_letters: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
string.digits: '0123456789'
"""
''.join(random.sample(string.ascii_letters + string.digits, 8))  # 'RTePaXy7'

os

os模块封装了操作系统的目录和文件操作
注意:有些在os模块中,有些在os.path模块中
另外:shutil 模块是对os模块的一个补充

import os

os.xxx

os.name  # 操作系统类型(posix代表Linux/Unix/Mac OS X,nt代表Windows)
os.uname()  # 获取详细操作系统信息(Windows不支持)
os.environ  # 环境变量
os.environ.get('PATH')  # 获取PATH变量的值,不存在则报错

os.getenv('X', default=None)  # 注意,获取的变量类型是字符串类型
os.mkdir()  # 创建目录
os.rmdir()  # 删除目录

os.rename()  # 重命名文件
os.remove()  # 移除文件

os.path.xxx

os.path.dirname(__file__)  # 获取文件的目录
os.path.dirname(os.path.dirname(__file__))  # 获取上级目录
os.path.abspath(__file__)  # 获取文件的绝对路径/完整路径,带文件名

os.path.splitext('/path/to/file.txt')  # ('/path/to/file', '.txt')

base_path = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
# 检测文件路径是否存在,不存在则新建
result_path = "/xxx"
if not os.path.exists(result_path):
    os.mkdir(result_path)
import os

filename = "./tmp/test.log"

os.makedirs(os.path.dirname(filename), exist_ok=True)
with open(filename, "wb") as f:
    pickle.dump(cookies, f)

os.system()

os.system("bash command")  # 运行shell命令

os.walk()

import os

# 基础方法
for dirpath, dirnames, filenames in os.walk(path):
    print(dirpath, dirnames, filenames)
    """
    har ['haha'] ['11.har']
    har/haha [] ['22.har']
    """

# 获取路径下指定后缀的所有文件名
def get_files(path, file_type=None):
    _list = []
    for dirpath, dirnames, filenames in os.walk(path):
        for name in filenames:
            _list.append(os.path.join(dirpath, name))

    if file_type:
        file_list = []
        for i in _list:
            if os.path.splitext(i)[1] == file_type:
                file_list.append(i)
        return file_list

    return _list

get_files("har")  # ['har/v11.har', 'har/1.txt', 'har/haha/22.har']
get_files("har", ".har")  # ['har/v11.har', 'har/haha/22.har']

sys

import sys

# 查看默认编码
sys.getdefaultencoding()  # Py3默认utf-8,Py2默认ascii

# 获取引入模块时会搜索哪些路径
sys.path

# 获取命令行传入的参数列表
sys.argv
"""
比如执行命令:python demo.py arg1 arg2 arg3 ...
sys.argv获取到的参数list为:["demo.py", "arg1", "arg2", "arg3", ...]
"""

ast

import ast

_str = "_dcit"
# 如果_str="faker.name()"这种非合法python类型,则会报错
# 另外_str=""也会报错
_dcit = ast.literal_eval(_str)

webbrowser

快速启动浏览器打开指定网站

import webbrowser

webbrowser.open("http://baidu.com")

math

https://docs.python.org/zh-cn/3.9/library/math.html

subprocess

subprocess 是 Python 中执行操作系统级别的命令的模块

比如用 Python 调用 JS 并传递变量

import subprocess
import json

def deposit(to_address):
    # 准备数据并序列化为 JSON
    data = {"receiverAddress": to_address}
    data_json = json.dumps(data)

    # 调用 Node.js 脚本并传递 JSON 数据
    # process = subprocess.run(["node", "transfer.js", data_json], capture_output=True, text=True)
    # print(process.stdout)

    # 异步调用
    process = subprocess.Popen(["node", "transfer.js", data_json], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    stdout, stderr = process.communicate()
    return stdout if stdout else stderr

JS 中获取变量

const input = process.argv[2];
const parsedInput = JSON.parse(input);
const receiverAddress = parsedInput.receiverAddress;