basicPython-5

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

os 模块

import os

# # 1 获取某一个文件夹下所有子文件以及子文件夹的名字
# res = os.listdir('.')
# print(res)

# # 2 读取某个"文件大小的属性"
# for i in res:
#     size = os.path.getsize(i)
#     print(size)

# 3 os.remove() 删除一个文件
# 4 os.rename(oldname,newname) 重命名文件/目录
# 5 os.system(r"dir C:\\a") 运行系统命令 -> dir[查看] 该路径下的文件有什么子文件夹/文件

# 6 print(os.environ) 获取系统环境变量,得到的是一个字典,根据字典特性,
# 可以将"某东西"通过-> environ[字符串]=字符串 <-直接加入系统环境变量中

# 7 os.path系列
# print(__file__)
# print(os.path.abspath(__file__))
# print(os.path.abspath('.'))

# res = os.path.split('/a/b/c/d.txt')
# print(res)

# print(os.path.dirname('/a/b/c/d.txt'))  # 获取其上一级名字
# print(os.path.basename('/a/b/c/d.txt'))  # 获取其最后的名字

# # 在python 3.5之后,推出了一个新的模块 pathlib
#
# from pathlib import Path
#
# # 魅力 x1
# p = Path(__file__)
# res = p.parent.parent
# print(res)
#
# # 魅力 x2
# res = Path('/a/b/c') / 'd/e.txt'
# print(res)

# 掌握:
print(os.path.isfile(r'C:\aaa'))  # 是否存在文件
print(os.path.dirname(r'c:\aaa\bbb'))
print(os.path.join('a,', 'C:' 'b', 'c', 'd', ))
print(os.path.normpath('/a/b/c/d/../..'))

sys 模块

import sys
import os

# 利用sys.argv获得的是解释器后面的参数 -> [run.py, 1, 2, 3]
# print(sys.argv)

# '''复制文件的工具(version 1.0)'''
#
# src_file = input('源文件路径>>>').strip()
# dst_file = input('目标文件路径>>>').strip()
#
# with open(r'%s' % src_file, mode='rb') as f1, \
#         open(r'%s' % dst_file, mode='wb') as f2:
#     while True:
#         res = f1.read(1024)
#         if not res:
#             break
#         f2.write(res)


'''复制文件的工具(version 2.0)---使用sys.argv功能'''

# 1 对输入的参数个数进行判断
length = len(sys.argv)
if length != 3:
    raise 'The number of parameters is incorrect'

# 2 进一步对参数进行识别
src_file = sys.argv[1]
dst_file = sys.argv[2]
# 2.1 两文件名相同
if src_file == dst_file:
    raise 'Duplicate file names'
# 2.2 原文件地址不存在
if not os.path.isfile(src_file):
    raise 'The file does not exist'
# 2.3 新文件地址已经存在
if os.path.isfile(dst_file):
    raise 'The file already exists'

# 3 复制文件
with open(r'%s' % src_file, mode='rb') as f1, \
        open(r'%s' % dst_file, mode='wb') as f2:
    while True:
        res = f1.read(1024)
        if not res:
            break
        f2.write(res)

random 模块

"""随机模块"""
import random

# 生成小数[无参数]
random.random()

# 生成整数
random.randint(-6, 6)  # [low, high]
random.randrange(-6, 6)  # [low, high)

# 生成实数[low, high]
random.uniform(-8, 8)

# 返回指定范围内的随机数[low, high)
"""
random.randrange(3, 30, 6)
它将生成 3 到 30 之间 "步长为>>>6" 的整数,如 3, 9, 15
"""
random.randrange(3, 20, 6)

# 随机取一个对象
list_1 = ['张大仙', 28, "贫穷", "乐观", "勇敢", ('可乐', '吃饭', '厕所')]
random.choice(list_1)

# 随机取多个对象(下例:取2个对象)
random.sample(list_1, 3)

# 随机打乱
"""
补充:用于将一个列表中的元素打乱顺序,值得注意的是使用这个方法不会生成新的列表,只是将原列表的次序打乱
"""
list_2 = [1, 3, 5, 7, 9]
random.shuffle(list_2)

"""
random模块练习
"""

"""生成n(n>=4)位密码(要求由数字、大写字母、小写字母和符号组成)"""


def generate_password(n=4):
    if n < 4:
        raise "The parameter must be greater than or equal to 4"

    list_3 = [[33, 47], [48, 57], [65, 90], [97, 122]]
    password = ""

    # 生成4位不同符号的密码(保底操作)
    for lt in list_3:
        num = random.randint(lt[0], lt[-1] + 1)
        password += chr(num)
    if n == 4:
        return password

    # 继续生成剩下的密码
    for i in range(1, n - 4 + 1):
        lt = random.choice(list_3)
        num = random.randint(lt[0], lt[-1] + 1)
        password += chr(num)
    # 将生成的密码打乱
    password = list(password)
    random.shuffle(password)
    password = "".join(password)
    return password


if __name__ == '__main__':
    print(generate_password(3))

time 模块

# # 第1部分:time模块
#
# import time
#
# # 1.时间戳(作用:用于时间间隔的计算)
# t1 = time.time()
# t2 = time.time()
# t = t2- t1
#
#
# # 2.格式化时间(作用:展示时间)
# # ---详细操作 (2023-05-22 16:58:51 Monday PM)
# print(time.strftime("%Y-%m-%d %H:%M:%S %A %p"))
#
# # ---默认简写 (05/22/23 17:01:04 Monday PM)
# print(time.strftime('%x %X %A %p'))
#
#
# # 3.结构化时间(作用:用于单独获取时间的某一部分)
# res = time.localtime()
# print(res)
# print(res.tm_year)
# print(res.tm_yday)


# # 第2部分:datetime模块
#
# import datetime
#
# # 1.快速展示现在的时间
# print(datetime.datetime.now())
#
# # 2.时间运算
# # ---以现在为准,算出7天前的具体时间
# res = datetime.datetime.now() + datetime.timedelta(days=-7)
# print(res)
#
# # ---以现在为准,算出4周前的具体时间
# res = datetime.datetime.now() + datetime.timedelta(weeks=-4)
# print(res)

# 第三部分:对于时间类型的模块需要掌握的是

# import time

# # 1 时间格式的转换
#
# # 1.1 struct_time -> 时间戳
# time1 = time.localtime()
# print(time1)
# print(time.mktime(time1))
#
# # 1.2 时间戳 -> struct_time
# time2 = time.time()
# print(time2)
# print(time.localtime(time2))
#
# # 1.3 世界标准时间(了解即可)
# print(time.gmtime(3333333))
#
# # 1.4 struct_time -> 格式化的字符串形式的时间
# time3 = time.localtime()
# res = time.strftime('%Y-%m-%d %H:%M:%S', time3)
# print(res)
#
# # 1.5 格式化的字符串形式的时间 -> struct_time
# res = time.strptime('1988-03-03 11:11:11', '%Y-%m-%d %H:%M:%S')
# print(res)
#
#
# # 2 总结:
# # 2.1 format string ---(strptime)---> struct_time ---(mktime)---> timestamp
# struct_time = time.strptime('1988-03-03 11:11:11', '%Y-%m-%d %H:%M:%S')
# timestamp = time.mktime(struct_time) + 7 * 86400  # 天的秒数为86400
# print(timestamp)
#
# # 2.2 format string <---(strftime)--- struct_time <---(localtime)--- timestamp
# res = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp))
# print(res)
#
# # 3 扩展了解
# import datetime
#
# # 3.1 时间戳 -> format string
# print(datetime.datetime.fromtimestamp(333333333))
#
# # 3.2 UTC【Coordinated Universal Time】时间不考虑任何地理位置或夏令时的差异,在全世界的各个时区中都是一致的
# print(datetime.datetime.utcnow())
#
# # 3.3
# print(time.asctime())

hash 模块

'''

1 什么是哈希hash?
    1.1 hash是一类算法,此算法接收传入的内容,通过运算得到一串的hash值(例如:md5、sha512、sha256)
    1.2 hash值的特点:
        1.2.1 只要传入的内容一样,得到的hash值必然相同
        1.2.2 不能由hash值反解成内容
        1.2.3 只要使用的hash算法不变,其hash长度是固定的


2 hash的用途
    2.1 用途1:特点2可以用于密码密文传输与验证
    2.2 用途2:特点1和3可以用于文件的完整性校验


3 如何使用

'''

# # 3 使用
# import hashlib
#
# m = hashlib.md5()
# m.update('hello'.encode('utf-8'))
# m.update('world'.encode('utf-8'))
# res1 = m.hexdigest()  # 'helloworld'的哈希值
# print(res1)
#
# b = hashlib.md5()
# b.update('helloworld'.encode('utf-8'))
# res2 = b.hexdigest()
# print(res2)
#
# print(res2 == res1)

''' 模拟撞库 '''

import hashlib

# 抓包获取了一个密码哈希值(md5)
password_hash = 'a820194546ecff7d3f909876bdc53b37'

# 从网上下载一个常用的密码库
password_list = ['123456', '778899', '1314520', 'qwq789123', 'cc56bb78']

# 哈希值准备
dic = {}
for i in password_list:
    # 算出当前密码的哈希值
    m = hashlib.md5()
    m.update(i.encode('utf-8'))
    hash_value = m.hexdigest()
    # 将信息以 -> 密码:哈希值 的键值对形式加入到字典中
    dic[i] = hash_value

# 开始撞库
for v in dic:
    if dic[v] == password_hash:
        print('撞库成功!密码原文>>>', v)
        break
else:
    print('撞库失败!')

''' 密码加盐 '''
# 假设用户的密码是 123456789
# 我们作为开发者,可以在客户端假设一个功能:
# 给用户设置的密码加上'王者归来'
# 规则如下:
# '王者'加在开头往后的第三个位置
# '归来'加在倒数第二个位置
# 加盐后的密码为:'12王者345678归来9'
# 再求对应的哈希值

re 模块

r'''左边的小r是为了防止转义"\"反斜杠


re模块 ~~~ 正则表达式


——————————————————————————————————————————
模式  ------------------  描述

\w  ------------------  匹配字母数字及下划线
\W  ------------------  上面取反
\s  ------------------  匹配任意空白字符,等价于[\t\n\r\f]
\S  ------------------  上门取反
\d  ------------------  匹配任意数字
\D  ------------------  上面取反
\A  ------------------  以什么开头 [了解]
\Z  ------------------  以什么结尾(不能用在有换行地方) [了解]
^什么   ------------------  以什么开头
什么$  ------------------ 以什么结尾
——————————————————————————————————————————
'''

import re

# 1 基本操作
# print(re.findall('\w', 'aAbc123_*()-='))
# print(re.findall('^love', 'love is my body, and I love it'))
# print(re.findall('love$', 'This is my love and The love is love'))

# 2 重复匹配

# 2.1 '.'匹配除了\n之外任意一个字符,指定re.DOTALL之后才能匹配换行
# print(re.findall('a.b', 'a1b a2b a b abbbb a\nb a\tb'))
# print(re.findall('a.b', 'a1b a2b a b abbbb a\nb a\tb', re.DOTALL))

# 2.2 '*'左边字符重复0次或以上,性格贪婪
# print(re.findall('ab*', 'a ab abb abbbbbb bbbbbbb'))

# 2.3 '+'左边字符重复1次或以上,性格贪婪
# print(re.findall('ab+', 'a ab abb abbbbb bbbbb '))

# 2.4 '?'左边字符重复0次或1次,性格贪婪
# print(re.findall('ab?', 'a ab abb bbbbb'))

# 2.5 '{n,m}'左边字符重复n次到m次,性格贪婪
# {0,} -> *
# {1,} -> +
# {0,1} -> ?
# {n} 单独一个n代表只出现n次

# print(re.findall('ab{2,5}','a ab abb abbb abbbb abbbbbbb bbbbbb'))

# 2.6 '[]'匹配指定字符一个
# print(re.findall('a[0-9]b', 'a11111b a3b a4b a9b aXb a b a\nb'))
# print(re.findall('a[0-9a-zA-Z]b', 'a11111b a3b a4b a9b aXb a b a\nb'))
# print(re.findall('a[^0-9a-zA-Z]b', 'a11111b a3b a4b a9b aXb a b a\nb'))
# print(re.findall('a[-0-9\n]b', 'a-b a11111b a3b a4b a9b aXb a b a\nb'))

# 3 小练习

# 3.1 匹配出所有的数字
# print(re.findall('\d+\.?\d*', 'asdfasdf123as1.13dfa12adsf1asdf3'))

shutil 模块

import shutil

# 高级的文件、文件夹、压缩包处理模块

# 将文件内容拷贝到另一个文件中
shutil.copyfileobj(open('old.xml', 'r'), open('new.xml', 'w'))

# 拷贝文件和权限
shutil.copy('src', 'dst')

# 递归的删除文件(不可恢复)
shutil.rmtree('folder1')

# 递归的去移动文件,其实就是重命名
shutil.move('folder1', 'folder3')

logging 模块

字典方式配置日志

文件名: settings.py

# 将配置字典的format内容提取到最前面(方便修改格式)

standard_format = '[%(asctime)s] [%(threadName)s:%(thread)d] [task_id:%(name)s]]\
 [%(filename)s:%(lineno)s] [%(levelname)s]-> %(message)s'
simple_format = '[%(levelname)s] [%(asctime)s] [%(filename)s:%(lineno)d] [%(message)s]'

# 配置字典

LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'loggers': {
        'pen1': {
            'level': 'DEBUG',
            'handlers': ['console'],
            'propagate': False  # 默认为True(向更高level的logger传递)
        },
        'pen2': {
            'level': 'DEBUG',
            'handlers': ['default'],
            'propagate': False
        },
        '': {
            'level': 'DEBUG',
            'handlers': ['console', 'default'],
            'propagate': False

        },
    },
    'handlers': {
        # 输出终端模式
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'simple'
        },
        # 输出文件模式
        'default': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',  # 日志轮转
            'formatter': 'standard',
            'filename': 'test.log',  # 日志的文件命名
            'encoding': 'utf-8',  # 指定文件的编码格式
            'maxBytes': 1024 * 1024 * 5,  # 日志大小 5M
            'backupCount': 5
        }
    },
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        }
    },
    'filters': {}
}

文件名: start.py

# 使用字典的方式配置日志

import logging.config
from settings import LOGGING_DIC

# 加载配置字典
logging.config.dictConfig(LOGGING_DIC)

# 创建并调用logger
logger = logging.getLogger('提现功能')

# 发出信息
logger.debug('这是一条debug')
logger.info('这是一条info')

logger.warning('这是一条warning')
logger.error('这是一条error')
logger.critical('这是一条critical')

编程式使用日志

文件名: log1

import logging

# # 输出程序运行的信息给维护人员看
# logging.debug('This is debug log')
# logging.info('This is info log')
# logging.warning('This is warning log')
# logging.error('This is error log')
# logging.critical('This is critical log')


# # 默认的日志输出级别为warning
# # 可使用baseConfig()来指定日志输出级别
# logging.basicConfig(level=logging.DEBUG)
# logging.debug('This is debug log')
# logging.info('This is info log')
# logging.warning('This is warning log')
# logging.error('This is error log')
# logging.critical('This is critical log')

文件名: log2

import logging

# 向文件输出日志 (文件的操作->默认是'a'模式, 可使用filemode='w'等等自行修改)
logging.basicConfig(filename='demo.log', filemode='a', level=logging.DEBUG)
logging.debug('This is debug log')
logging.info('This is info log')
logging.warning('This is warning log')
logging.error('This is error log')
logging.critical('This is critical log')

文件名: log3

import logging

# "绝对自定义"输出信息:format -> message
logging.basicConfig(format='%(message)s', level=logging.DEBUG)

# 日志中的message部分:
name = 'peter'
age = '18'
logging.debug('姓名:%s, 年龄:%s, 充值失败' % (name, age))

文件名: log4

import logging

# 输出格式和添加一些公共信息
logging.basicConfig(format='%(asctime)s---%(levelname)s---%(filename)s---%(lineno)s---%(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S',  # 对上面的时间格式不满意,自定义后,再去覆盖原来提供给我们的时间格式
                    level=logging.DEBUG)

# 日志中的message部分:
name = 'peter'
age = '18'
logging.debug('姓名:%s, 年龄:%s, 充值失败' % (name, age))
logging.debug('姓名:%s, 年龄:%s, 充值失败' % (name, age))
logging.warning('姓名:%s, 年龄:%s, 充值失败' % (name, age))

文件名: log5

# 编程的方式来写一下高级的写法

'''
# logging的高级应用
# 它提供给我们了四个类

Loggers: 记录器,提供应用程序代码能直接使用的接口
Handlers: 处理器,将记录器产生的日志发送到目的地
Filters: 过滤器,提供更好的粒度控制,决定哪些日志会被输出
Formatters: 格式化器,设置日志内容的组成结构和消息字段
'''

import logging

# 记录器Logger
logger1 = logging.getLogger('applog')
logger1.setLevel(logging.DEBUG)

# 处理器handler
# --处理器1
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.DEBUG)
# --处理器2
fileHandler = logging.FileHandler(filename='addDemo.log')
fileHandler.setLevel(logging.CRITICAL)

# 格式器formatter
fmt = logging.Formatter('%(asctime)s|%(levelname)-8s|%(filename)10s:%(lineno)4s|%(message)s')

# 给处理器设置格式
consoleHandler.setFormatter(fmt)
fileHandler.setFormatter(fmt)

# 给记录器设置处理器
logger1.addHandler(consoleHandler)
logger1.addHandler(fileHandler)

# 定义一个过滤器
flt = logging.Filter('cn.cccb')

# 关联过滤器
# logger1.addFilter(flt)
fileHandler.addFilter(flt)
# consoleHandler.addFilter(flt)

# 调用部分之发出日志信息
logger1.debug('This is debug')
logger1.info('This is info')
logger1.warning('This is warning')
logger1.error('This is error')
logger1.critical('This is critical')

配置文件式使用日志

文件名: loggg.conf

[loggers]
keys=root,applog

[handlers]
keys=fileHandler,consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_applog]
level=DEBUG
handlers=fileHandler,consoleHandler
qualname=applog
propagate=0

[handler_consoleHandler]
class=StreamHandler
args=(sys.stdout,)
level=DEBUG
formatters=simpleFormatter

[handler_fileHandler]
class=handlers.TimedRotatingFileHandler
args=('applog.log','midnight',1,0)
level=DEBUG
formatters=simpleFormatter

[formatter_simpleFormatter]
format=%(asctime)s|%(levelname)8s|%(filename)s[:%(lineno)d]|%(message)s
datefmt=%Y-%m-%d %H:%M:%S

文件名: log11.py

# 配置文件的方式来处理日志

import logging
import logging.config

# 加载配置文件
logging.config.fileConfig('loggg.conf')

# 获取两个logger并使用即可
rootLogger = logging.getLogger()
rootLogger.debug('This is a root Logger, debug')

logger = logging.getLogger('applog')
logger.debug('This is applog, debug')

# 知识补充(绝对捕获异常):
a = 'abc'
try:
    int(a)
except Exception as e:
    # logger.error(e)
    logger.exception(e)

subprocess 模块

''' 执行系统命令的模块 '''
import subprocess

# 创建一个对象,如果命令执行错误,结果走错误管道,反之
obj = subprocess.Popen('dir D:', shell=True,  # 查看D盘下的内容, shell=True相当于调用了cmd
                       stdout=subprocess.PIPE,  # 正确输出=管道
                       stderr=subprocess.PIPE,  # 错误输出=管道
                       )

# 打印对象
print(obj)

# # 查看两个管道的结果
# print(obj.stdout.read())  # 正确输出的那条管道
# print(obj.stderr.read())  # 错误输出的那条管道

# 查看两个管道的结果
print(obj.stdout.read().decode('gbk'))  # 正确输出的那条管道(跟着系统的编码进行信息解码)
print(obj.stderr.read().decode('gbk'))  # 错误输出的那条管道(跟着系统的编码进行信息解码)

configparser 模块

'''
对配置文件进行操作的模块(configparser)
'''

import configparser

config = configparser.ConfigParser()
config.read('test.ini')  # 获取配置文件的信息

# 获取sections
# print(config.sections())

# 获取某一sections下的所有options
# print(config.options('sections1'))

# 获取items
# print(config.items('sections1'))

# 获取具体的某个参数
# res = config.get('sections1', 'user')
# print(res, type(res))

# res = config.getint('sections1', 'age')
# print(res, type(res))

# res = config.getboolean('sections1', 'is_admin')
# print(res, type(res))
matlab液体湿润模拟,【水文模型】01 三水源新安江模型 目录一、概述1.1 流域概况1.2 产流方式论证1.3 设计基本任务1.4 设计原始资料二、新安江模型2.1 流域划分2.2 产汇流计算2.2.1 蒸散发计算2.2.2 产流计算2.2.3 水源划分2.2.4 汇流计算2.3 模型参数2.3.1 参数物理意义2.3.2 参数率定结果2.4 模拟结果2.4.1 精度统计表2.4.2 计算与实测流量过程线比较三、精度统计与误差分析3.1 精度统计3.2... 阅读详情

相关推荐

制作Ubuntu22.04启动盘

现在越来越多程序代码都需要运行在linux环境下,运行这些代码的前提是安装一个稳定的linux操作系统。本文选择Ubuntu 22.04去制作系统启动盘。本文主要对ubuntu22.04的启动盘制作过程进行了详细的说明,希望能帮助到有需要的朋友。

lyx_ok的博客 1万+

basicPython-1

元组、列表、字典、集合、字符串、格式化输出、循环语句、生成式、异常处理

因为热爱,所以坚持。 833

海康威视GigE工业相机的python调用demo

默认路径安装完成后,在路径C:\Program Files (x86)\MVS\Development\Samples\Python\BasicDemo下的BasicDemo.py中,海康威视官方提供了基本的调用方法,本文也是基于这个修改的。BasicDemo.py提供了通过枚举选择相机的方法,在官方的另一个DEMO:ConnectSpecCamera.py中提供了另一种不通过枚举,直接访问特定IP相机的方法,也可以参考。另外,如果每台相机都定义了唯一的用户定义名,也可以通过用户定义名来区分相机。

xulibo5828的博客 2108

basicPython-2

普通函数、生成器、迭代器、递归函数、匿名函数、装饰器、记忆函数

因为热爱,所以坚持。 515

auto.js梦幻西游游戏脚本,梦幻西游脚本开发思路

本篇文章给大家谈谈梦幻西游脚本用什么语言写,以及auto.js梦幻西游游戏脚本,希望对各位有所帮助,不要忘了收藏本站喔。

npy199331的博客 1939

某商场G区火灾自动报警与控制系统设计

某商场G区火灾自动报警与控制系统设计 摘要:随着我国经济建设的迅速发展,人民生活水平不断提高,城市用地日益紧张,促使建筑物正朝着高层化、密集化方向发展。高层建筑的特点决定其火灾的危险性和高层建筑的火灾自动报警系统的重要性,一套完整的火灾自动报警及联动控制系统是高层建筑发生火灾时人们生命财产的有利保障,是能否快速准确地发现火情,把火灾扑灭在萌芽状态的关键所在。文章通过消防设计,论述了火灾自动报警及消...

weixin_44026784的博客 5366

basicpython-6

自制模块、案例展示

因为热爱,所以坚持。 513

借助生成式 AI 加快创作速度,通过快速构建 Omniverse 扩展程序,您可以直接在 USD Composer 中连接首选的生成式 AI 智能体并与之交互。或者,您也可以使用由 LLM 提供支持的

通过快速构建 Omniverse 扩展程序,您可以直接在 USD Composer 中连接首选的生成式 AI 智能体并与之交互。或者,您也可以使用由 LLM 提供支持的 OpenUSD 开发方法,为您的工作流程提供强劲助力。

pvmsmfchcs的博客 683

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 399

运行openclaw gateway install时出现Gateway install failed: Error: schtasks create failed的解决方案

本文主要介绍了运行openclaw gateway install时出现Gateway install failed: Error: schtasks create failed的解决方案,希望能对学习和使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

【Proteus仿真】51单片机+DAC0832+数码管制作0-25V电压可调

【Proteus仿真】51单片机+DAC0832+数码管制作0-25V电压可调

perseverance51博客 2117

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 232

QT实现警报应用程序

QT实现警报应用程序

希望我的博客,能帮上你解决学习中工作中所遇到的问题 2039

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 419

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 205

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 76

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 158

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 267

Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》

本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。

铭渊老黄 134

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 125

魔塔社区微调训练Qwen2-1.5B-Instruct模型并烧录到‌RK3568开发板教程

本文基于Ubuntu 22.04 + CUDA 13.0.3环境,使用LLaMA-Factory框架对Qwen2-1.5B-Instruct模型进行LoRA微调,训练儿童故事生成专用模型。通过配置qwen模板、制作alpaca格式数据集、执行sft训练并合并LoRA权重,最终将模型转换为GGUF格式,并量化为Q4_K_M以适配RK3568嵌入式平台。全程支持国产镜像加速下载与显存优化,实现高效轻量化部署。

浅清秋慕夏的博客 185

【回眸】DeepSeek V4.1 Flash 快速上手与实战

本文介绍如何高效本地部署开源大模型,通过现代化工具链实现分钟级环境搭建。聚焦显存优化、一键安装、代码调用与多轮对话实现,解决“显存不足”“连接超时”等痛点,提供参数调优与结构化输出技巧,助力开发者在离线场景下快速构建稳定、高效的本地推理系统。

啤酒鸭的物联网开发记录博客 222

智叟云集-手机证据抓取系统的工程结构与应用入口

本文系统阐述手机证据抓取系统的工程结构与应用入口,涵盖四大层面:工程目录划分(Android、Python服务、Web页面、测试与构建工具);Android组件通过Manifest声明可启动页面,主界面由MainActivity管理;Python服务通过run.py解析参数并启动FastAPI应用,支持远程访问;浏览器页面采用HTML/CSS/JS分离架构,静态资源通过路径关联,实现动态交互。各模块分工明确,协同构建可运行的采集系统。

2301_77178996的博客 231

Java Arrays.asList 常见坑详解|UnsupportedOperationException、数组联动、基本类型 bug

解析 Arrays.asList 常见开发陷阱,演示 UnsupportedOperationException、底层数组引用共享、基本类型数组问题,区分 Arrays 内部 ArrayList 与 java.util.ArrayList,给出数组转 List 的各种场景正确代码。

weixin_42617033的博客 450
上一篇: basicPython-4
下一篇: basicpython-6
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值