如何给当前目录及子目录下所有python文件首行增加允许使用utf-8的中文注释

从github上下载别人的模型时总是需要中文进行注释,但每次都要在python文件头部增加注释

# -*- coding: utf-8 -*-\n

过于繁琐,于是写了段代码可以一次运行就能给模型的所有python文件头部添加上面的注释

使用方法是在模型的根目录(一般README.md所在目录或者模型最外层目录)下运行一次该python文件即可

# -*- coding: utf-8 -*-
import os

# 每次将该文件放在模型根目录下运行,一般是README.md所在目录,或者说最外层目录

# ###########首先获取当前目录下所有文件路径,包含递归子目录下的文件
path = os.getcwd()  # 获取当前路径(模型根目录)
print "当前文件所在路径为={}".format(path)


# 获取当前目录下的所有内容
# listDir = os.listdir(path)
# for x in listDir:
#     print(x)

def recursion_dir_all_file(path):
    file_list = []
    for dir_path, dirs, files in os.walk(path):
        for file in files:
            file_path = os.path.join(dir_path, file)
            if "\\" in file_path:
                file_path = file_path.replace('\\', '/')
            file_list.append(file_path)
        for dir in dirs:
            file_list.extend(recursion_dir_all_file(os.path.join(dir_path, dir)))
        break  # 注意只需要让外围for循环运行第一次即可,也就是每次获得当前目录下的3元组即可,os.walk也会递归运行
    return file_list


all_files = recursion_dir_all_file(path)

# ################筛选出以.py结尾的文件名
python_files = []

print "the number of files={}".format(len(all_files))
for file in all_files:
    if file.endswith('.py'):
        python_files.append(file)
        print file

print "the number of python files={}".format(len(python_files))


# ##############将这些文件读取,并在第一行插入注释:
# -*- coding: utf-8 -*-\n

def insertFirstSentence(file):
    with open(file, 'r+')as fin:
        old = fin.read()
        fin.seek(0)
        data = "# -*- coding: utf-8 -*-\n"
        fin.write(data)
        fin.write(old)

# 先试试能否改变一个.py文件的首行
# file = 'test.py'
# with open(file, 'r+')as fin:
#     old = fin.read()
#     fin.seek(0)
#     data = "# -*- coding: utf-8 -*-\n"
#     fin.write(data)
#     fin.write(old)

for file in python_files:
    insertFirstSentence(file)
print "Done!"

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值