pathlib.Path("a.crt").write_text(a[0])
p.chmod(0o444)
Path.cwd()
p.write_bytes(b'Binary file contents')
p.read_bytes()
Path('setup.py').exists()
class pathlib.WindowsPath(*pathsegments)
WindowsPath('c:/Program Files/')
1. pathlib - 高级用法
pathlib 提供了一个面向对象的文件系统路径操作接口。我们来看看如何使用这个库进行一些更高级的操作:
链式方法调用
pathlib 允许使用链式方法调用来简化文件操作。例如,你可以直接从一个路径对象创建、读取和写入文件,而无需中间变量。
python
Copy code
from pathlib import Path
# 创建并写入文件
(Path("example_folder") / "test.txt").write_text("Hello, world!")
# 读取文件
content = (Path("example_folder") / "test.txt").read_text()
print(content)
# 列出目录下所有文件
files = [x for x in Path("example_folder").iterdir() if x.is_file()]
print(files)
# 使用glob模式查找文件
py_files = list(Path("example_folder").glob("*.py"))
print(py_files)
路径操作和检查
使用 pathlib 进行文件路径的操作和状态检查非常直观:
python
Copy code
from pathlib import Path
p = Path("/usr/bin/python3")
# 检查是否为文件
if p.is_file():
print(f"{p} is a file.")
# 检查是否为目录
if p.parent.is_dir():
print(f"{p.parent} is a directory.")
# 解析路径的各个部分
print(f"Name: {p.name}")
print(f"Suffix: {p.suffix}")
print(f"Parent Directory: {p.parent}")
2. difflib - 高级用法
difflib 是处理文本差异和生成差异报告的强大工具。它可以用来高效地比较文件内容或生成人类可读的差异报告。
生成详细的文本差异
使用 difflib 的 unified_diff 生成具有上下文的差异,这对代码审核尤其有用。
python
Copy code
import difflib
import sys
text1 = "one\ntwo\nthree\nfour\nfive\n".splitlines(keepends=True)
text2 = "zero\none\ntree\nfour\nfive\n".splitlines(keepends=True)
# 生成带上下文的差异
diff = difflib.unified_diff(text1, text2, fromfile='old.txt', tofile='new.txt')
sys.stdout.writelines(diff)
生成 HTML 差异报告
HtmlDiff 类可以生成一个 HTML 表格,显示两个序列之间的差异,适合在Web页面上展示比较结果。
python
Copy code
import difflib
text1 = "This is a test text file.".split()
text2 = "This is a test shifted text file.".split()
html_diff = difflib.HtmlDiff()
html_content = html_diff.make_file(text1, text2, context=True, numlines=2)
# 输出 HTML 内容到文件
with open("diff.html", "w") as f:
f.write(html_content)