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("批量重命名完成")