python小工具

川海之泽 2021-10-27 15:49:27
编程语言 Python 文件名 批量替换 文件编码

批量替换文件关键字


# -*- coding: UTF-8 -*-

from __future__ import unicode_literals
import os,sys,re

"""默认对象列表"""
alltenants = ['4600', '4601', '4602', '4603', '4606', '4607', '4608', '4630', '4660', '4666']

dirnow = os.getcwd()
dirin = dirnow + '/' + 'infile'
dirout = dirnow + '/' + 'outfile'

# 创建脚本文件输入输出目录
def findPath(dirin,dirout):
if not os.path.exists(dirin) and not os.path.exists(dirout):
os.mkdir(dirout)
# print('********** 脚本输出目录outfile创建成功 **********')
print('********** Directory outfile created success **********')
os.mkdir(dirin)
# print('********** 创建infile目录成功,请手动将源脚本放入infile目录 **********')
print('********** Directory infile created,Pls put sql files into this directory **********')
input('Press <Enter>')
findPath(dirin,dirout)


def edit(newfile, sqlall,tenantid, tenantmore):
# newfile 脚本文件名称
# sqlall 脚本中语句
# tenantid 当前租户id
# tenantmore 目标租户id
print('********** excuting ' + newfile)
opnewfile = open(newfile, 'a+', encoding='utf-8')
with opnewfile:
newrow = sqlall.replace(tenantid, tenantmore)
opnewfile.write('\n' + newrow)
# for sqlrow in sqlall:
# newrow = sqlrow.replace(tenantid, tenantmore)
# opnewfile.write('\n' + newrow)
opnewfile.close()
# print('脚本输出到outfile目录完成')

def tenantsSqls(tenantid,alltenants,newfile,sqlall):
if os.path.isfile(newfile):
print('********** [ERROR] Same filename in dest directory', newfile)
ck = input('********** Cover same file? (Y/N): ')
if ck[0].lower() == 'n':
print('********** Ignore same name file **********')
else:
os.remove(newfile)
for tenantmore in alltenants:
# newname = filename.replace(tenantid, tenantmore)
# newpath = dirout + "/" + newname
edit(newfile, sqlall, tenantid, tenantmore)
else:
print('********** Start checkout tenants **********')
for tenantmore in alltenants:
# newname = filename.replace(tenantid, tenantmore)
# newpath = dirout + "/" + newname
edit(newfile, sqlall,tenantid, tenantmore)

if __name__ == '__main__':
fileall = os.listdir(dirin)
for file in fileall:
if os.path.isdir(file):
print(file + '********** This is not sql file **********')
else:
if not file:
print('********** [ERROR] Put files in folder "infile" and play again **********')
sys.exit(0)
else:
filename = file
newfile = dirout + "/" + filename
oldfile = dirin + "/" + filename

sqlfile = open(oldfile, 'r', encoding='utf-8')
"""判断脚本文件编码是否utf-8"""
with sqlfile as f1:
try:
sqlall = f1.read()
except BaseException as exc:
print("********** [ERROR] Maybe codestyle wrong in the file ********** ")
print(filename)
print(exc)
sqlfile.close()

print(newfile)
select = input("********** Do with all tenants? (Y/N/S): ")

if select[0].lower() == 'y':
if re.match('8600', filename, flags=0):
print('********** ' + filename + ' **********')
tenantsSqls('8600', alltenants,newfile,sqlall)
else:
print("********** [WARN] Ignore this file: " + filename)
elif select[0].lower() == 'n':
tenant_now = input("********** Which word to replace? (ex:8600): ")
tenant_code = input("********** Input target replace to(use <,> to split): ")
tenant_code = tenant_code.split(',')
alltenants = []
for code in tenant_code:
alltenants.append(code)
tenantsSqls(tenant_now, alltenants,newfile,sqlall)
elif select[0].lower() == 's':
opnewfile = open(newfile, 'a+', encoding='utf-8')
with opnewfile:
newrow = sqlall
opnewfile.write('\n' + newrow)
opnewfile.close()

print( '=' * 60 )
print('Done.Thank you for using')
input('Press <Enter>')
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.
  • 101.
  • 102.
  • 103.
  • 104.
  • 105.
  • 106.
  • 107.
  • 108.
  • 109.
  • 110.
  • 111.
  • 112.




版权声明
本文为[川海之泽]所创,转载请带上原文链接,感谢
https://blog.51cto.com/zerry/4344571

  1. 【算法学习】237. 删除链表中的节点(java / c / c++ / python / go)
  2. 【算法学习】1672. 最富有客户的资产总量(java / c / c++ / python / go / rust)
  3. 【算法学习】771. 宝石与石头(java / c / c++ / python / go / rust)
  4. 【算法学习】02.03. 删除中间节点(java / c / c++ / python / go)
  5. 【算法学习】1769. 移动所有球到每个盒子所需的最小操作数(java / c / c++ / python / go / rust)
  6. 【算法学习】1486. 数组异或操作(java / c / c++ / python / go / rust)
  7. 【算法学习】LCP 44. 开幕式焰火(java / c / c++ / python / go / rust)
  8. 【算法学习】剑指 Offer 58 - II. 左旋转字符串(java / c / c++ / python / go / rust)
  9. python的学校疑问难题求解
  10. 大学python题 作业题 基础题
  11. Python字典的知识,输出的样例为,最高分:89
  12. python写入文件失败且程序提前中止
  13. 用Python写一个学生字典,帮帮忙
  14. Python,能不能帮帮忙,真的不会
  15. [python] yield 和 readline() 的使用问题
  16. python安装找不到问题救救孩子
  17. python中循环结构完成数字游戏
  18. 如何用python实现多列vlookup(excle操作)
  19. python语言deLong‘s test:通过统计学的角度来比较两个ROC曲线、检验两个ROC曲线的差异是否具有统计显著性
  20. LPC55S69 MicroPython模组和库函数
  21. LPC55S69 IoT Kit专属 Micropython模组和库函数简介
  22. 安装LPC55S69 MicroPython模块是遇到的CDC Interface驱动问题
  23. 使用soundcard在Python中操作声卡
  24. 自动化快速上手--Python(7)--【字典】--每天半小时
  25. Python之循环结构【包括列表、for语句、range()函数、while语句、循环嵌套、break、continue、算法优化等】
  26. Python模块安装与异常处理详解(numpy、pygame、matplotlib等)
  27. Python__init__.py作用
  28. python 爬取网页时出现多种错误
  29. Python中关于大量绘制速度曲线的问题
  30. python-async的安装和使用方法
  31. Matlab的fread(fild,1,int32)迁移到python变成什么
  32. 想用python开发一个音频过滤器,请指导?
  33. python使用openpyxl读取Excel文件显示No such file or directory
  34. xmoji虚拟头像交互如何使用python(像深度学习)制作?
  35. python 打开页面页面的链接,为什么总是报错呀?
  36. Python中DataLoader的batch_size、shuffle的疑惑。
  37. python安装pymssql库,可以import,但无法调用函数
  38. 【Python学习教程】常用的8个Python数据可视化库!
  39. python处理csv中的时间
  40. 数据结构,元音统计(Python)
  41. python的site-packages复制直接到其他电脑环境上能用吗
  42. Pycharm如何给项目配置python解释器
  43. conda创建python虚拟环境
  44. Python selenium的爬虫无法完整爬取整个页面的内容
  45. 高清版!这18张 Python 数据科学速查表,让你的代码变得更强大!
  46. python代码不会敲,请好心老哥帮助我一下
  47. Python敲七输出符合的个数
  48. Python 有人能给提供简单的思路嘛
  49. python单次运行写入csv成功,循环写入失败
  50. python利用os模块进行增量备份
  51. 【算法学习】807. 保持城市天际线(java / c / c++ / python / go / rust)
  52. 如何利用python输出等腰杨辉三角
  53. python按键执行倒计时小程序不能实现要求,要怎么改才好?
  54. Python request模块post请求的问题
  55. Django连接已有Oracle时的主键设置问题,没主键无法查询怎么办?
  56. 如何用python的dictionary编写一个联系人通讯录程序
  57. 如果Python里range反向输出,不输出步长会怎么样?
  58. 一个关于Python pip的问题: 出现Cannot open \python\Scripts\pip-script.py报错
  59. 富婆闺蜜非让我用Python给她写个淘宝双十一抢购脚本,那只能安排了
  60. 【全网最全】python正则表达式大全,所有讲解都在这,包教包会,学不会找我!