批量转换ipynb为py文件,若非utf-8类型,则转为utf-8编码。收集整理文件夹及子文件夹中所有py文件,并拷贝到指定文件夹中。

下为批量转换ipynb为py文件

import sys
import json
import os
import os.path
import time
time1=time.time()

def MergeTxt(filepath):
    for parent, dirnames, filenames in os.walk(filepath):
        for filepath in filenames:
            txtPath = os.path.join(parent, filepath) # txtpath就是所有文件夹的路径
            f_name = os.path.splitext(filepath)[0]
            pyPath = os.path.join(parent, f_name)
            with open(txtPath,"rb") as fp:
                content = json.load(fp)
                #print(content)
                with open(pyPath + ".py","w",encoding= 'utf-8') as fp:
                    for item in content["cells"]:
                        for i in item['source']:
                            fp.write(i.rstrip() +"\n")
                    fp.close()
                    print(txtPath + '转换完成')

print ("finished")
if __name__ == '__main__':
    filepath="F:\\fff" #注意:应先删除文件大小为0的文件。
    MergeTxt(filepath)
    time2 = time.time()
    print ('总共耗时:' + str(time2 - time1) + 's')

下为判断文本文件编码,若非utf-8类型,则转为utf-8编码

from chardet.universaldetector import UniversalDetector
def get_encode_info(file):
    with open(file,'rb')as f:
        detector = UniversalDetector()
        for line in f.readlines():
            detector.feed(line)
            if detector.done:
                break
        detector.close()
        return detector.result['encoding']
def read_file(file):
    with open(file,'rb')as f:
        return f.read()
    
def write_file(content,file):
    with open(file,'wb')as f:
        f.write(content)
        f.close()
        
def convert_encode2utf8(file,original_encode,des_encode):
    file_content = read_file(file)
    file_decode =file_content.decode(original_encode,'ignore')
    file_encode = file_decode.encode(des_encode)
    write_file(file_encode,file)

import glob
filenames = glob.glob("f:\\ggg\\*.py")    
    
for i in range(len(filenames)):    
    filename = filenames[i]
    file_content = read_file(filename)
    encode_info = get_encode_info(filename)
    if encode_info != 'utf-8':
        print(filename)
        convert_encode2utf8(filename,encode_info,'utf-8')
    encode_info = get_encode_info(filename)
print('转换任务完成')

下为合并所有utf-8编码py文件,带文件名

import glob
import os
filepath ="f:\\hhh\\"
filelist = glob.glob(filepath+'*.py')
namelist = [os.path.basename(i) for i in filelist]
txtfile = filepath+"py_pgm_for_search.txt" 
for i in range(len(filelist)):
    file = filelist[i]
    name = namelist[i]
    print(i,name)
    fp = open(file,"r",encoding= 'UTF-8')
    content = fp.read()
    with open(txtfile, mode='a',encoding='UTF-8') as filename:
            filename.write('######################################################################\n                  序号:' +str(i+1).zfill(3) +' 文件名:'+name+'\n######################################################################\n')
            filename.write(content)  # 换行
            filename.write('\n######################################################################\n######################################################################\n\n\n\n')  # 换行
print('任务完成')    

下为收集整理文件夹及子文件夹中所有py文件,形成列表

import glob
dir = "F:\\hhh\\"
path = [f for f in glob.glob(dir + "**/", recursive=True)] #列出所有文件夹下的子文件夹
lista = []
for i in range(len(path)):
    listb = [f for f in glob.glob(path[i] + "*.py" ,recursive=True)]
    for j in listb:
        lista.append(j)
lista    

下为将不同路径下的py文件拷入到一个文件夹中去

import os
import shutil
new_path = "f:\\iii"

namelist = [os.path.basename(i) for i in lista]
for i in range(len(lista)):
    old_name = lista[i]
    new_name =  new_path + "\\" + "No" + str(i+1).zfill(4) + "_" + namelist[i]
    shutil.copyfile(old_name, new_name)
    print(i)
print(f"任务完成,共{i+1}个文件")    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值