输入与输出
1. 格式化字符串
f-string(推荐,3.6+)
name = "Go"
year = 2009
f"{name} was released in {year}" # 'Go was released in 2009'
f"{3.14159:.2f}" # '3.14'
f"{'center':*^20}" # '******center*******'
f"{1234567:,}" # '1,234,567'str.format
"{0} is {1}".format("Go", "great")
"{name} likes {food}".format(name="Bob", food="pizza")
"{0:>10}".format("right")printf 风格
"%s = %d" % ("x", 1)repr 与 str
s = "Hello"
str(s) # 'Hello'
repr(s) # "'Hello'"2. 文件读写
with open("file.txt", "r", encoding="utf-8") as f:
text = f.read()
# 或逐行
for line in f:
process(line)写入:
with open("out.txt", "w", encoding="utf-8") as f:
f.write("Hello\n")
print("World", file=f)模式:
| 模式 | 含义 |
|---|---|
r |
只读(默认) |
w |
覆盖写 |
a |
追加 |
b |
二进制(与上组合:rb) |
+ |
读写 |
3. JSON
import json
data = {"name": "Go", "year": 2009}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
loaded = json.loads(json_str)
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False)
with open("data.json", "r", encoding="utf-8") as f:
data2 = json.load(f)4. CSV
import csv
with open("data.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)
with open("out.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["name", "age"])
writer.writerows([["A", 1], ["B", 2]])5. pickle 序列化
pickle 可以序列化几乎所有 Python 对象,但不安全,不要加载不可信来源:
import pickle
pickle.dumps([1, 2, 3])
pickle.loads(b'...')6. 路径与文件系统
os.path 与 pathlib:
from pathlib import Path
p = Path("/tmp/data")
p.exists()
p.mkdir(parents=True, exist_ok=True)
(p / "file.txt").write_text("hi", encoding="utf-8")
list(p.glob("*.txt"))7. 命令行参数
import sys
print(sys.argv)
# argparse 更强大
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--name", required=True)
parser.add_argument("--count", type=int, default=1)
args = parser.parse_args()小结
掌握格式化、文件 IO、JSON、CSV、pathlib 后,已能处理大多数实际任务。下一章学习错误与异常。