pathlib and difflib

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)



posted @ 2024-06-07 15:33  vivi~  阅读(5)  评论(0编辑  收藏  举报