Create by xinyuan 2020/05/06
- 目的:
有时候我们在一份Category需要在多个项目工程上使用,这个时候我们经常就会有一个创建复制粘贴的步骤。为了减少这多余的操作时间,所以就有了一个这样的需求出现。
- 实现原理:
通过Python简单的操作对文件的创建以及内容的复制。
一、脚本内容
- 文件目录
可以看到我们主要文件就是`command.sh`和`copy.py`
- 1、command.sh 内容
#!/bin/bash
echo '输入旧前缀'
read old_prefix
echo '输入新前缀'
read new_prefix
echo '输入新项目名称'
read new_project_name
python copy.py --old_prefix $old_prefix --new_prefix $new_prefix --new_project_name $new_project_name
- 2、copy.py 内容
#! /usr/bin/python
# -*- coding: UTF-8 -*-
import os
import string
import shutil
import sys
import time
import argparse
#忽略文件列表
ignore_file_list = [".DS_Store"]
def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):
newRoot = root.replace("Old","New")
os.mkdir(newRoot)
for fileName in files:
need_ignore = None
for ignore_folder in ignore_file_list:
if fileName == ignore_folder:
need_ignore = 1
break
if need_ignore:
continue
filename = os.path.join(root, fileName)
file_object = open(filename,'r')
all_the_text = file_object.read( )
newText = all_the_text.replace(old_prefix,new_prefix)
arr = newText.split('\n')
nowTime = time.strftime("%Y/%m/%d", time.localtime())
created = "// Created by copy on " + nowTime
arr[4] = created;
newProjectName = "// " + new_project_name
arr[2] = newProjectName;
newTextss = '\n'.join(arr)
newFileName = fileName.replace(old_prefix,new_prefix)
newFile = os.path.join(newRoot, newFileName)
fp = open(newFile,'w')
fp.write(newTextss)
fp.close()
def parse_args():
global script_path, proj_ios_path
parser = argparse.ArgumentParser(description='复制类修改前缀工具.\n')
parser.add_argument('--old_prefix', dest='old_prefix', type=str, required=False, help='替换前类名前缀')
parser.add_argument('--new_prefix', dest='new_prefix', type=str, required=False, help='替换后类名前缀')
parser.add_argument('--new_project_name', dest='new_project_name', type=str, required=False, help='新项目名称')
args = parser.parse_args()
return args
def main():
global old_prefix
global new_prefix
global new_project_name
app_args = parse_args()
old_prefix = app_args.old_prefix
new_prefix = app_args.new_prefix
new_project_name = app_args.new_project_name
print "开始生成copy文件"
filename = os.path.join(os.getcwd(), "New")
del_list = os.listdir(filename)
for f in del_list:
file_path = os.path.join(filename, f)
if os.path.isfile(filename):
os.remove(filename)
elif os.path.isdir(filename):
shutil.rmtree(filename)
target_folder = os.path.join(os.getcwd(), "Old")
file_name(target_folder)
print "生成copy文件成功"
if __name__ == "__main__":
main()
二、操作步骤
- 1、 我们需要将
command.sh
、copy.py
、New
以及Old
放在同一个目录下。 - 2、将把需要复制的文件放入
Old
下,例如我这边是需要复制下面的文件
5eb27f5cbd7f2.png
- 3、打开终端 输入
sh command.sh
- 4、根据自己的需求输入相关内容
-
5、最后我们就可以看到我们需要的文件啦~
5eb2818532b63.png
网友评论