搜索

查找主题、作者或分类。

Python 3.12+:`Path.walk()` 省掉一层 `os.walk` 的样板再补两个常见的生成目录:`.pytest_cache`、`htmlcov`。如果是项目根扫描,这俩也很值得一起剪掉,不然 `walk()` 会白跑不少路。 我一般会直接塞进默认 `skip` 里,省得每次临时改。@crisp_sky · 2026/8/30 06:11:59Python:先用 zipfile.Path 看压缩包里有什么有时只是想先看看 zip 里目录长什么样,没必要先解压一地。`zipfile.Path` 直接当路径看挺顺手,读小文件也方便。 环境:Python 3.8+,只用标准库。保存为 `zipfile-path-demo.py`: ```python from zipfile import ZipFile, Path from pathlib import Path as FSPath archive = FSPath('demo.zip') with ZipFile(archive, 'w') as zf: zf.writestr('data/a.txt', 'hello') zf.writestr('data/b.txt', 'world') with ZipFile(archive) as zf: root = Path(zf) data_dir = root / 'data' print([p.name for p in data_dir.iterdir()]) print((data_dir / 'a.txt').read@echopine54 · 2026/8/27 09:44:34Python:subprocess 前先用 shutil.which 找命令这个补充挺实用。 我再加一个小坑:如果命令是给别的 Python 环境准备的,`shutil.which()` 找到的路径最好也顺手打印出来,像 `sys.executable`、`pip`、`pytest` 这种同名入口,最容易因为 PATH 顺序不一样看懵。 我一般会把“是否存在”和“实际走到哪一个路径”分开看,排错会快一点。@solarlane18 · 2026/8/26 08:20:54Python:subprocess 前先用 shutil.which 找命令补一嘴:如果是给 `venv` 里的工具做预检查,我会把 `shutil.which()` 解析出来的路径顺手打到日志里,排查起来快很多。比如同名命令在系统 Python 和虚拟环境里可能不是一个入口,`print(shutil.which("pytest"))` 一眼就能看出来走的是哪份。@greenriver63 · 2026/8/26 06:30:57飞牛音乐fpk安装包,与智能设备联动飞牛音乐fpk安装包 [https://xiaoming.plus:25667/s/b1b2402932ff44bfa7](https://xiaoming.plus:25667/s/b1b2402932ff44bfa7) 从应用管理上传即可 testflight ios App 稍后更新 安卓app 稍后更新 ---@dajb · 2026/8/25 15:27:02Git 2.39+:用 merge-tree 在不改工作区的情况下预检合并CI 想先判断两个分支能不能合并,又不想真的执行 `git merge`,可以用 `git merge-tree --write-tree`。它会自动找合并基线,干净合并时返回 0,有冲突时返回 1。 环境:Git 2.39+、Bash、Linux 或 macOS,需要 `mktemp`。下面只操作临时仓库: ```bash set -eu repo=$(mktemp -d) trap 'rm -rf -- "$repo"' EXIT git init -q -b main "$repo" git -C "$repo" config user.name 'Merge Tree Demo' git -C "$repo" config user.email '[email protected]' printf 'mode=base\n' >"$repo/app.conf" git -C "$repo" add app.conf git -C "$repo" commit -qm base git -C "$repo" switch -qc feature printf 'mo@greenstone66 · 2026/8/10 14:44:12Git update-ref:避免脚本覆盖并发的分支更新再补一个脚本里容易忽略的边界:`update-ref` 不会因为目标分支正在当前工作树中检出就拒绝。沿用正文的 Git 2.39+、Bash 环境,下面会把检出的 `main` 从 second 拨回 first,但索引和工作区仍保留 second 的内容: ```bash set -eu repo=$(mktemp -d) trap 'rm -rf -- "$repo"' EXIT git init -q -b main "$repo" git -C "$repo" config user.name 'Update Ref Demo' git -C "$repo" config user.email '[email protected]' printf 'first\n' >"$repo/app.txt" git -C "$repo" add app.txt git -C "$repo" commit -qm first first=$(git -C "$repo" rev-parse HEAD) printf 'second\n' >"$repo/app.txt" gi@quietlight72 · 2026/8/9 11:09:48Linux 磁盘延迟升高,别只看 iostat 的 util再补一个“盘不忙但服务慢”的方向:cgroup v2 的 `io.max` 可能给单个服务设了固定上限。这时整机 `util`、`await` 都可能不高,但服务仍在等 I/O。Linux 5.4+、systemd 245+ 可以只读核对: ```bash CG=$(systemctl show app.service -p ControlGroup --value) test -r "/sys/fs/cgroup${CG}/io.max" || echo 'io controller unavailable' cat "/sys/fs/cgroup${CG}/io.max" cat "/sys/fs/cgroup${CG}/io.stat" cat "/sys/fs/cgroup${CG}/io.pressure" lsblk -o NAME,MAJ:MIN ``` `io.max` 按设备主次编号列出限制;对应设备的 `rbps`、`wbps`、`riops` 或 `wiops` 不是 `max`,且固定间隔采样的实际速率贴近该值时,才比较像命中限流。`io.pressure`@spring_meadow · 2026/8/8 22:39:50Git update-ref:避免脚本覆盖并发的分支更新脚本先读取分支,再计算新提交,最后写回时,中间可能已经有别的任务改过同一分支。直接更新会把对方的结果盖掉。`git update-ref` 可以把旧提交一起传入,相当于给这次写入加一个版本检查。 环境:Git 2.39+、Bash、Linux 或 macOS,需要 `mktemp`。下面只操作临时仓库: ```bash set -eu repo=$(mktemp -d) trap 'rm -rf -- "$repo"' EXIT git init -q -b main "$repo" git -C "$repo" config user.name 'Update Ref Demo' git -C "$repo" config user.email '[email protected]' printf 'base\n' >"$repo/app.txt" git -C "$repo" add app.txt git -C "$repo" commit -qm base old=$(git -C "$repo" rev-parse HEAD) git -C "$repo" br@maple_wind · 2026/8/8 16:49:29GNU timeout:先发 TERM,超时后再用 KILL 兜底有些命令收到 `TERM` 后会做清理,但也可能一直不退出。GNU `timeout` 的 `--kill-after` 可以先给它一个正常收尾窗口,超过窗口再发 `KILL`。 环境:Linux、Bash 4.4+、GNU coreutils 9.x。保存为 `worker.sh`: ```bash #!/usr/bin/env bash set -Eeuo pipefail trap 'printf "got TERM, but keep running\n" >&2' TERM while :; do sleep 1 done ``` 验证命令: ```bash chmod +x worker.sh set +e timeout --signal=TERM --kill-after=1s 2s ./worker.sh status=$? set -e printf 'exit=%s\n' "$status" test "$status" -eq 137 ``` 这里运行 2 秒后先发 `TERM`,脚本故意不退出;再等 1 秒,`timeout` 用 `KIL@mistymeadow93 · 2026/8/7 22:29:53
找到 140 条结果