Python小操作第一弹

1. 将ipynb文件转为py文件

必要的时候需要将文件格式进行转换,例如需粘贴完整代码时。

import json
from pprint import pprint
import re


def invalid_code(_str):
    pattern = re.compile(r'(import|=|\.|:|return)')
    return re.search(pattern, _str)


file_name = r"main\tree.ipynb"
with open(file=file_name, mode="r", encoding="utf-8") as ipynb_f:
    contents = "".join(ipynb_f.readlines())
infos = json.loads(contents)
print(file_name.split(".")[0])
with open(file=file_name.split(".")[0] + '.py', mode="w", encoding="utf-8") as py_f:
    for cell in infos["cells"]:
        if cell["cell_type"] != "code":
            py_f.write('\n')
            continue
        if len(cell['source']) > 0 and invalid_code(cell['source'][-1]) is None:
            cell['source'].pop(-1)
        py_f.writelines(cell["source"])
        py_f.write('\n\n')

2. 删除已有文档中重复的文字,生成字符集。

在Unity中使用Text Mesh Pro时可能涉及生成自定义character file,此时可以用以下代码完成。

import os

adr = r"F:\Unity Projects\Beng_BiSai\Assets\TextMesh Pro\Character File.txt"

with open(adr, 'r', encoding='utf-16') as f:
    content = f.read()

content = content.replace(' ', '')
corpus = ''
for n in content:
    if n not in corpus:
        corpus += n

print(corpus)

os.remove(adr)

with open(adr, 'w', encoding='utf-16') as f:
    f.write(corpus)

3. 根据哈希值验证文件的完整性和相同性

如果文件的大小足够大的话,可以看到每一次读取更新后sha1变量都有所改变。 

import hashlib
import os

sha1 = hashlib.sha1()  # 创建一个哈希对象
print(sha1)
print(sha1.hexdigest())

with open('../data/FashionMNIST/raw/train-images-idx3-ubyte', 'rb') as f:  # 二进制读取模式
    while True:
    # 进入一个无限循环,用于逐块读取文件内容并计算哈希值。
    # 每次循环迭代,代码会读取最多 1048576 字节(1 MB)的数据块(这是一个缓冲区大小的选择),然后更新 SHA-1 哈希对象的状态。
        data = f.read(1048576)
        if not data:
            break
        sha1.update(data)
        print(sha1.hexdigest())

通过哈希值验证某文件是否存在的好处在于,能够进一步验证文件的完整性和一致性。普通的做法是直接验证文件名是否存在,但是无法确定文件内容的一致性。两个不同版本的文件可能具有相同的名称,但内容不同。当需要确保文件内容没有被修改或篡改时,验证哈希值是一个常见的方法。

4. 文件批量重命名

import os

# 指定文件夹路径
folder_path = '/path/to/your/folder'

# 获取文件夹下的所有文件名
file_list = os.listdir(folder_path)

# 定义新的文件名格式
new_name_format = "new_file_{}.txt"

# 遍历文件列表并重命名文件
for i, file_name in enumerate(file_list):
    old_path = os.path.join(folder_path, file_name)
    new_name = new_name_format.format(i + 1)  # 使用新的文件名格式
    new_path = os.path.join(folder_path, new_name)
    os.rename(old_path, new_path)

print("批量重命名完成")

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值