前言
哈哈这次不是什么新想法,而是我一直这么搞的,perl来做了gen_perl/gen_python/gen_sh,然后我的上个虚拟机挂了后就遗失了,导致我最近非常抓狂
幸好我最近虽然有点失忆但是大面上还记得呢。
生成文件
最后要生成的文件就是这样的可执行文件:
#!/usr/bin/python
###############################################################
## Name : python_script.py
## Author : xiaotu
## Time : 2021-05-15 11:29:08
## Description:
##
##
###############################################################
import sys
import os
import re
import argparse
import math
def input_args_proc():
parser = argparse.ArgumentParser(description="argparse info")
parser.add_argument('-o', action='store_true', default=False, help='open this script')
result = parser.parse_args()
if result.o == True:
os.system("gvim %s" % __file__)
sys.exit(0)
def main():
print("%s is working" % __file__)
input_args_proc()
if __name__ == "__main__":
main()
自动设置了input_args_input(),是为了使用-o指令自动打开文件,详见:
内置了print("%s is working" % __file__)这句话指示目前是哪个脚本在执行,我实在是被用错脚本路径坑怕了。
关键处理
获取作者、创建时间、待创建脚本名称:
#!/usr/bin/perl -w
my $user = `whoami`;
my $date = `date "+%Y-%m-%d %H:%M:%S"`;
my $name = "python_script.py";
my @line;
$name = $ARGV[0] if $#ARGV >= 0;
打印这一大堆东西:
push(@line, "#!/usr/bin/python\n");
push(@line, "\n");
push(@line, "###############################################################\n");
push(@line, "## Name : $name\n");
push(@line, "## Author : $user");
push(@line, "## Time : $date");
push(@line, "## Description:\n");
push(@line, "## \n");
push(@line, "## \n");
push(@line, "###############################################################\n");
push(@line, "\n");
push(@line, "import sys\n");
push(@line, "import os\n");
push(@line, "import re\n");
push(@line, "import argparse\n");
push(@line, "import math\n");
push(@line, "\n");
push(@line, "def input_args_proc():\n");
push(@line, " parser = argparse.ArgumentParser(description=\"argparse info\")\n");
push(@line, " parser.add_argument('-o', action='store_true', default=False, help='open this script')\n");
push(@line, " result = parser.parse_args()\n");
push(@line, " if result.o == True:\n");
push(@line, " os.system(\"gvim %s\" % __file__)\n");
push(@line, " sys.exit(0)\n");
push(@line, "\n");
push(@line, "def main():\n");
push(@line, " print(\"%s is working\" % __file__)\n");
push(@line, " input_args_proc()\n");
push(@line, "\n");
push(@line, "if __name__ == \"__main__\":\n");
push(@line, " main()\n");
创建文件,写入,并设置为可执行文件:
open FILE, "> $name";
print FILE @line;
close FILE;
system("chmod a+x $name");
执行一下
[xiaotu@xiaotu-eda ~/my_work/glb_env]$gen_python new_st
[xiaotu@xiaotu-eda ~/my_work/glb_env]$new_st
.//new_st is working
这不是完美么?