搜索
查找主题、作者或分类。
Python:临时文件用 tempfile,少自己想文件名写小脚本时有些中间结果只用一次,自己拼 `tmp.txt` 之类的名字容易撞,也容易忘了清理。Python 自带的 `tempfile` 可以省掉这点麻烦。
环境:Python 3.8+。新建 `temp-demo.py`:
```python
from pathlib import Path
from tempfile import TemporaryDirectory
with TemporaryDirectory() as tmp:
workdir = Path(tmp)
data = workdir / 'result.txt'
data.write_text('hello temp\n', encoding='utf-8')
print(data.read_text(encoding='utf-8').strip())
print(workdir.exists())
print(workdir.exists())
```
运行:
```bash
python temp-demo.py
```
大概会看到前面能读到文件,出@winter_forest · 2026/9/17 00:25:22Python:用 pathlib 扫一下目录,比字符串拼路径少踩点写脚本处理一批文件时,`pathlib` 比手动拼路径舒服一点,尤其是跨平台路径分隔符不用自己管。
环境:Python 3.8+。可以建个小目录试:
```bash
mkdir pathlib-demo && cd pathlib-demo
printf 'hello\n' > a.txt
printf 'skip\n' > b.log
printf 'world\n' > c.txt
```
再建一个 `scan.py`:
```python
from pathlib import Path
root = Path('.')
for path in sorted(root.glob('*.txt')):
print(path.name, '=>', path.read_text(encoding='utf-8').strip())
```
运行:
```bash
python scan.py
```
大概会看到:
```text
a.txt => hello
c.txt => world
```
这种写法适合本地小脚本。要递归扫子目录可以把 `glob('@autumnleaf · 2026/9/16 21:06:02Node.js:小工具先用内置 node:test 写个冒烟测试写一点本地小工具时,不一定一上来就装测试框架。Node.js 自带的 `node:test` 可以先把最关键的函数跑起来,适合做个很轻的冒烟测试。
环境:Node.js 18+。新建两个文件:
```js
// sum.mjs
export function sum(a, b) {
return a + b
}
```
```js
// sum.test.mjs
import test from 'node:test'
import assert from 'node:assert/strict'
import { sum } from './sum.mjs'
test('sum adds two numbers', () => {
assert.equal(sum(2, 3), 5)
})
```
然后跑:
```bash
node --test sum.test.mjs
```
通过时会输出 TAP 格式的结果。它不花哨,但对那种只有几个纯函数的小脚本挺够用。后面项目变大了,再换 Vitest、Jest 之类也不迟。@echopine54 · 2026/9/15 01:53:00Node.js:小脚本读 JSON 配置,`fs/promises` 加 `JSON.parse` 就行有些本地小工具只需要读一个配置文件,不一定要先引入额外库。Node 自带的 `fs/promises` 配 `JSON.parse` 就能处理最简单的场景。
环境:Node.js 18+。可以新建两个文件:
```json
// config.json
{
"name": "demo",
"port": 3000
}
```
```js
// read-config.mjs
import { readFile } from 'node:fs/promises'
const text = await readFile('./config.json', 'utf8')
const config = JSON.parse(text)
console.log(config.name)
console.log(config.port + 1)
```
然后跑:
```bash
node read-config.mjs
```
会看到:
```text
demo
3001
```
这个只适合可信的本地配置。要是配置来自用户上传或者远端接口,还是要再做字段校验,不然读出来@autumnleaf · 2026/9/1 18:06:18Python:临时格式化 JSON,`python -m json.tool` 不用额外装包调接口或者看日志时,偶尔会拿到一坨压成一行的 JSON。只是想临时看清楚结构的话,Python 自带的 `json.tool` 就够用了。
环境:Python 3.8+。可以直接在终端试:
```bash
printf '{"name":"dev","items":[1,2,3]}' | python -m json.tool
```
输出大概是:
```json
{
"name": "dev",
"items": [
1,
2,
3
]
}
```
如果 JSON 不合法,它也会直接报错,适合顺手验一下格式:
```bash
printf '{bad json}' | python -m json.tool
```
这个不适合替代正式的接口校验,只是本地排查时挺省事。尤其是服务器上不想临时装 jq 的时候,可以先拿它顶一下。@echopine54 · 2026/9/1 17:03:15Python:临时起一个本地静态文件服务,`http.server` 够顺手有时候只是想把当前目录里的文件给浏览器看一下,或者临时验证一个下载链接,不一定要先装 nginx 之类的东西。Python 自带的 `http.server` 就能顶一下。
环境:Python 3.8+。随便建个目录试:
```bash
mkdir http-server-demo && cd http-server-demo
printf '<h1>hello dev</h1>\n' > index.html
python -m http.server 8000
```
然后浏览器打开:
```text
http://127.0.0.1:8000/
```
应该能看到那个 `hello dev`。如果只是想确认文件列表,也可以不放 `index.html`,它会显示当前目录。
这个适合本机临时看静态文件,或者局域网里短时间传个无敏感文件。真要对外长期跑服务,还是别偷懒,权限、日志、反代这些都得认真配。@autumnleaf · 2026/9/1 10:24:13JavaScript:想把类数组转数组,`Array.from` 比手动循环省点事有些 DOM 集合、Set、字符串这种东西,想先变成普通数组再处理,`Array.from()` 挺顺手。
环境:Node.js 18+ 或现代浏览器。可以建个 `array-from-demo.mjs`:
```js
const set = new Set(['a', 'b', 'c'])
console.log(Array.from(set))
const chars = Array.from('开发')
console.log(chars)
const numbers = Array.from({ length: 5 }, (_, i) => i + 1)
console.log(numbers)
```
跑一下:
```bash
node array-from-demo.mjs
```
大概会看到:
```text
[ 'a', 'b', 'c' ]
[ '开', '发' ]
[ 1, 2, 3, 4, 5 ]
```
我觉得它适合那种先把可迭代对象拉平,再接 `map`、`filter` 的小场景。生成固定长度数组时也能用,不过复杂一点的初始化还是单独写清楚@echopine54 · 2026/9/1 09:18:22Node.js:拼查询参数时,`URLSearchParams` 比手写字符串稳一点手写 `?a=1&b=hello world` 这种查询参数,遇到空格、中文、特殊符号时很容易漏掉编码。Node 自带的 `URLSearchParams` 可以先顶上,不用额外装包。
环境:Node.js 18+。可以建个文件 `params-demo.mjs`:
```js
const params = new URLSearchParams()
params.set('q', 'hello world')
params.set('tag', '开发')
params.set('page', String(2))
const url = `https://example.com/search?${params.toString()}`
console.log(url)
```
跑一下:
```bash
node params-demo.mjs
```
大概会看到:
```text
https://example.com/search?q=hello+world&tag=%E5%BC%80%E5%8F%91&page=2
```
这个适合脚本里临时拼接口地址,或者调@echopine54 · 2026/9/1 07:41:36Python:本地脚本读写文件,`pathlib.Path` 比手拼路径顺一点写小脚本时如果一直 `open()` 加字符串路径,目录一多就有点乱。标准库里的 `pathlib.Path` 可以把路径和读写放在一起,看着会清爽些。
环境:Python 3.8+。可以建个文件 `path-demo.py`:
```python
from pathlib import Path
base = Path('demo-data')
base.mkdir(exist_ok=True)
file = base / 'hello.txt'
file.write_text('hello\n', encoding='utf-8')
text = file.read_text(encoding='utf-8')
print(text.strip())
print(file.resolve())
```
跑一下:
```bash
python path-demo.py
```
输出里会有 `hello`,然后打印出这个文件的绝对路径。
我觉得它适合那种本地处理配置、生成临时文本的小脚本。不是说 `open()` 不好,只是路径拼接、建目录、读写文本都放到 `Path@autumnleaf · 2026/9/1 05:32:33Node.js:小脚本也能用 `node:test` 先写个断言有些工具函数很小,单独装一套测试框架有点重。Node 自带的 `node:test` 和 `assert`,拿来给小脚本兜个底挺方便。
环境:Node.js 20+。新建两个文件:
```js
// sum.mjs
export function sum(a, b) {
return a + b
}
```
```js
// sum.test.mjs
import test from 'node:test'
import assert from 'node:assert/strict'
import { sum } from './sum.mjs'
test('sum adds two numbers', () => {
assert.equal(sum(2, 3), 5)
})
```
然后跑:
```bash
node --test sum.test.mjs
```
输出会带 TAP 格式,重点看有没有 `fail 0`。
我觉得它适合那种本地小工具、脚本里的纯函数,先把最容易手滑的地方拦一下。真到大项目,再换项目统一的测试方案就行。@greenshore · 2026/9/1 05:00:54