调整注释内容在代码的上一行

调整注释内容在代码的上一行

我们经常可以看到有些公开的项目喜欢将注释内容写在同一行,特别是部分内容较长不方便阅读,为此写了一个脚本进行简单的批量处理。

import os


def split_code_comment(src_file_path, dst_file_path):
    f = open(src_file_path, 'r', encoding='utf-8')
    ff = open(dst_file_path, 'w', encoding='utf-8')
    with f,ff:
        new_lines = []
        lines = f.readlines()
        for line in lines:
            if line.strip().startswith('#'):  
                new_lines.append(line)  
                 
            elif '#' in line:
                line_code, line_comment = line.split("#")
                null_str_num = len(line_code) - len(line_code.lstrip())
                new_lines.append(
                    "".join(
                        (
                            null_str_num * " ", "# ", 
                            line_comment.rstrip(), "\n"
                        )
                    )
                )
                new_lines.append(line_code.rstrip() + "\n")
            else:
                new_lines.append(line)

        ff.writelines(new_lines)

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是注释版的示例代码: ``` import torch import torch.nn as nn import torch.optim as optim import torchvision import torchvision.transforms as transforms from torch.utils.data import DataLoader # 定义模型 class TransferModel(nn.Module): def __init__(self, num_classes): super(TransferModel, self).__init__() # 使用预训练的ResNet-18模型 self.resnet = torchvision.models.resnet18(pretrained=True) # 将ResNet-18的最后一层全连接层替换为一个新的全连接层 self.resnet.fc = nn.Linear(512, num_classes) def forward(self, x): # 前向传播 output = self.resnet(x) return output # 数据预处理 transform_train = transforms.Compose([ # 随机裁剪和大小变换 transforms.RandomResizedCrop(224), # 随机水平翻转 transforms.RandomHorizontalFlip(), # 将数据转换为tensor类型 transforms.ToTensor(), # 归一化 transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)) ]) transform_test = transforms.Compose([ # 将图像大小调整为256x256 transforms.Resize(256), # 中心裁剪为224x224 transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)) ]) # 加载数据集 trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform_train) trainloader = DataLoader(trainset, batch_size=32, shuffle=True, num_workers=4) testset = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform_test) testloader = DataLoader(testset, batch_size=32, shuffle=False, num_workers=4) # 定义模型和损失函数 device = torch.device("cuda" if torch.cuda.is_available() else "cpu") num_classes = 10 model = TransferModel(num_classes).to(device) criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9) # 训练模型 num_epochs = 10 for epoch in range(num_epochs): running_loss = 0.0 for i, data in enumerate(trainloader, 0): # 将输入数据和标签转移到指定设备上 inputs, labels = data inputs, labels = inputs.to(device), labels.to(device) # 清空优化器的梯度信息 optimizer.zero_grad() # 计算输出和损失 outputs = model(inputs) loss = criterion(outputs, labels) # 反向传播和优化 loss.backward() optimizer.step() # 计算平均损失 running_loss += loss.item() if i % 200 == 199: print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 200)) running_loss = 0.0 print('Finished Training') # 评估模型 correct = 0 total = 0 with torch.no_grad(): for data in testloader: # 将输入数据和标签转移到指定设备上 images, labels = data images, labels = images.to(device), labels.to(device) # 计算模型的输出 outputs = model(images) # 找到每个输出向量中的最大值,并返回其所在的索引,即预测的类别 _, predicted = torch.max(outputs.data, 1) # 计算正确预测的样本数和总样本数 total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the network on the test images: %d %%' % ( 100 * correct / total)) ``` 希望这样更容易理解些。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值