`
banxi1988
  • 浏览: 152006 次
  • 性别: Icon_minigender_1
  • 来自: 桂林
社区版块
存档分类
最新评论

java与python之编程之对比:一个简单的代码模板生成程序

阅读更多
python部分的代码几乎是来息此文章:
http://blog.sina.com.cn/s/blog_4419b53f0100abzb.html
我小部分改进之后代码如下:
#-*- coding:utf-8 -*-
# file :makeBasic.py
#
import os
import sys
import string
import datetime
# python 简单的脚本模板 
def main():
	if os.path.isfile(sys.argv[1]):
		print '%s already exist!' % sys.argv[1]
		sys.exit()
	basic_template = open(sys.argv[1],'w') # create a file in write mode
	today = datetime.date.today() # transform now to 'yyyy-mm-dd' s format
	date = today.strftime('%Y')+'-'+today.strftime('%m')+'-'+today.strftime('%d')
	filetypes = string.split(sys.argv[1],'.') # 判断文件类型
	length = len(filetypes)
	filetype = filetypes[length -1]
	print 'file type is :'+filetype
	if filetype == 'py':
		print 'use python mode'
		basic_template.writelines('#-*- coding:utf-8 -*-')
		basic_template.write('\n')
		basic_template.writelines('# file :'+sys.argv[1])
		basic_template.write('\n')
		basic_template.write('# date :'+date)
		basic_template.write('\n')
		 basic_template.write('##----------------------------------------------------')
		basic_template.write('\n')
		print 'template create successfully' 
	else:
		print 'not support other file time currently'
	basic_template.close() # 关闭文件
if __name__ == '__main__':
	main()
		


使用方法如下:
引用

banxi1988@banxi:~/work/python$ python makeBasic.py  fileRead.py
file type is :py
use python mode
template create successfully
banxi1988@banxi:~/work/python$


而用java来写呢!我自己写了如下一个:
我自己对于Java比较熟悉点,所以用Java写得自认为还是不错的.
从结构等方面来看都是容错性啊等等:
package me.banxi.io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class MakeCode{
	public static void usage(){
		StringBuilder builder = new StringBuilder(1024);
		builder.append(" Usage:\n");
		builder.append(" unix-like: $ java MakeCode yourSourceFileName \n");
		builder.append(" example: $ java MakeCode HelloWorld.java");
		builder.append(" -------------------the end ------------------------------");
		System.out.println(builder.toString());
	}//:usage
	public static void notSupport(String fileName){
		String []strs = fileName.split(".");
		if(strs.length < 1) {
			System.out.println("you have not give a file .suffix! file type of "+fileName+"are not support now!");
		}else {
			System.out.println("file type of "+strs[strs.length-1]+"are not support now!");
		}

	}//:notSupport

	public  static boolean cancelCreate( String name ){
		System.out.println("file with name  of "+name+"is already exists!\n");
		System.out.println("do you want to build a new file?(y/n)");
		Scanner scanner  = new Scanner(System.in);
		String yesOrNo = scanner.next();
		if(yesOrNo.equalsIgnoreCase("y")) {
			return false;
		}
		return true;
		
	}//:isContinue
	
	private static void createTemplate(File file) {
		PrintWriter writer = null;
		try {
			writer = new PrintWriter(file);
			StringBuilder builder = new StringBuilder(256);
			builder.append("import java.io.*;\n");
			builder.append("import java.util.*;\n");
			builder.append("/**\n");
			builder.append(" * @author yourName \n");
			builder.append(" * @date "+(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())));
			builder.append("\n */\n");
			builder.append("public class "+file.getName());
			builder.append("{\n");
			builder.append("\n");
			builder.append("}\n");
			writer.write(builder.toString());
			writer.flush();
		} catch (FileNotFoundException e) {
			System.out.println("no such file:"+file.getAbsolutePath());
			e.printStackTrace();
		}finally {
			if(writer != null) {
				writer.close();
			}
		}
		
	}// :createTemplate


	public static void main(String ... args){
		if(args.length < 1){
			usage();
			System.exit(1);
		}//
		String fileName = args[args.length -1];
		if(fileName.endsWith(".java")){
			File file = new File(fileName);
			if(file.exists()){
				if(cancelCreate(file.getName())){
					System.exit(1);
				}
			}
			createTemplate(file);
			System.out.println("create java source template successfully!");
			System.out.println("file's full name was:"+file.getAbsolutePath());
		}else{
			notSupport(fileName);
			System.exit(1);
		}	

	}//

}//:end MakeCode
/**
 *   运行结果:
file with name  of MyFileReader.javais already exists!

do you want to build a new file?(y/n)
y
create java source template successfully!
file's full name was:/home/banxi1988/work/tomcat7/JavaIo/MyFileReader.java

生成模板内容:
import java.io.*;
import java.util.*;
**
 * @author yourName 
 * @date 2011-10-10 23:17:40
 *
public class MyFileReader.java{

}
 */




python版的我修改之后如下:
主要修改了,如果没有传递参数,提示用法.
时期精确到时分秒.
如果已经有文件了提示是否创建新的:
#-*- coding:utf-8 -*-
# file :makeBasic.py
#
import os
import sys
import string
from datetime import datetime
# python 简单的脚本模板 
def usage():
	usages = """
	 Usage:
	 unix-like usage:$ python makeBasic myfile.py
	 example :       $ python makeBasic helloworld.py
	"""
	print usages

def main():
	if len(sys.argv) < 2:
		usage()
		sys.exit()
		
	if os.path.isfile(sys.argv[1]):
		print '%s already exist!' % sys.argv[1]
		yesOrNo = raw_input ('do you still want to create a new file?(y/n)')
		if(yesOrNo.strip().lower() == 'n'):
			sys.exit()
	basic_template = open(sys.argv[1],'w') # create a file in write mode
	date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
	filetypes = string.split(sys.argv[1],'.') # 判断将创建的文件是什么类型然后分别处理
	length = len(filetypes)
	filetype = filetypes[length -1]
	print 'file type is :'+filetype
	if filetype == 'py':
		print 'use python mode'
		basic_template.writelines('#-*- coding:utf-8 -*-')
		basic_template.write('\n')
		basic_template.writelines('# file :'+sys.argv[1])
		basic_template.write('\n')
		basic_template.write('# date :'+date)
		basic_template.write('\n')
		basic_template.write('##----------------------------------------------------')
		basic_template.write('\n')
		print 'template create successfully' 
	else:
		print 'not support other file time currently'
	basic_template.close() # 关闭文件
if __name__ == '__main__':
	main()
		
分享到:
评论

相关推荐

    中间代码生成代码(中缀表达式转换为四元式)

    Python实现的编译原理中间代码生成程序,使用了PyQt5写图形界面 题目:设计一个程序,该程序能够将形如x=y op z的简单赋值语句翻译为对应的四元式序列,其中op可为+、-、*、/等二元运算符。要求用图形界面方式编程. ...

    Python 核心编程 第二版

     19.2 Tkinter与Python编程 534  19.3 Tkinter举例   19.4 其他GUI简介   19.5 相关模块和其他GUI   19.6 练习   第20章 Web编程   20.1 介绍   20.2 使用Python进行Web应用:创建一个简单的...

    Python核心编程第二版

     3.6 第一个Python程序   3.7 相关模块和开发工具   3.8 练习   第4章 Python对象   4.1 Python 对象   4.2 标准类型   4.3 其他内建类型   4.3.1 类型对象和type类型对象   4.3.2 None--...

    pyobfuscate:混淆python源代码替代python源代码的小工具-源码

    pyobfuscate是一个源代码模糊器:它生成Python源代码对于人类来说很难阅读,但对于Python来说仍然是可执行的口译译员 为什么要混淆? -------------- 混淆对于开源来说没有什么意义 (http://www.opensource.org/)...

    Python编程入门经典

    12.4.2 一个更加强大的Python 搜索 207 12.5 软件生命周期中的正规 测试 210 12.6 本章小结 210 第13章 使用Python编写GUI 213 13.1 Python的GUI编程工具箱 213 13.2 Tkinter简介 215 13.3 用Tkinter创建GUI 小组件 ...

    “使用元编程为空指针异常生成动态补丁”(SANER'17)中描述的程序修复工具的开放科学代码_Java_Python_下.zip

    “使用元编程为空指针异常生成动态补丁”(SANER'17)中描述的程序修复工具的开放科学代码_Java_Python_下.zip

    Python(面向对象编程语言) v3.4.0.zip

    与其他主要的语言如 C 和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。 可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C 编写,然后在...

    Python核心编程第二版(ok)

     3.6 第一个Python程序   3.7 相关模块和开发工具   3.8 练习   第4章 Python对象   4.1 Pythonc对象   4.2 标准类型   4.3 其他内建类型   4.3.1 类型对象和type类型对象   4.3.2 None--...

    代码 最小生成树Prim算法代码

    代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小生成树Prim算法代码代码 最小...

    python编程入门介绍(二).pptx

    解释器/编译器:高级语言与机器语言之间的翻译官 Python解释器: CPython:最广泛 IPython: 加强交互式 PyPy:更快的速度 Jython: 运行在Java平台 ....pyc中保存解释后的代码,仅对导入主程序的模块生成

    Python 2.5

    如果一个程序可以与输入输出文件工作,Python 可以生成输入,运行这个程序,然后检查输出并进行分析。如果问题在于数据,你可以编写一次性的脚本来检查数据是否一致。 &lt;br/&gt; &lt;br/&gt;数据清除和转换 &lt;br/&gt;...

    java猜数字小程序

    简略的java小程序,实现猜数字功能,课程参考.

    Python访问Mysql数据库

    原因之一———它是由一群希望看到一个更加优秀的Python 的 人创造并经常改进着的。 (3) 可移植性 由于它的开源本质,Python 已经被移植在许多平台上 (经过改动使它能够工作在不同平台上)。如果小心地避免使 用...

    Python必学教程 Python开发工具 高效Python编程神器 最全Pycharm教程 - 精编版 共331页.pdf

    9—创建并运行一个基本的Python测试程序 85 10—Pycharm调试器总篇 92 11—Pycharm调试器之断点篇 101 12—Pycharm调试器之Java脚本调试 108 13—Pycharm部署 116 14—Pycharm编辑器功能总篇 130 15—Pycharm编辑器...

    词法分析程序生成器实现将正则表达式、NFA、DFA、DFA最小化词法分析程序.zip

    词法分析程序生成器实现将正则表达式、NFA、DFA、DFA最小化词法分析程序 词法分析程序生成器是一个工具,它能够...此外,这个项目对于希望进入编译器设计、程序分析和代码生成等领域的人来说,是一个很好的实践机会。

    基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.9.0版)

    2、生成JavaBean更名为生成数据模型并且提供了C#、C++、Golang、Rust、Python、Objective-C、Swift等编程语言数据模型的简单模板 3、新增生成SpringBoot项目工程的功能,在生成自定义文件界面直接生成一个可以跑...

    C、Java和Python的BNF范式

    「编程语言」课程的配套资源,包含了C、Java和Python的BNF范式生成规则。

    大学期间做的各样项目:Java-Python-JavaScript-Vert.X-SpringBoot.zip

    一个简单的短网址服务系统,可通过 RESTful API 来生成新短网址,短网址与原网址的映射存储在 Redis 数据库中,用户请求短网址时会被重定向到原网址。后台使用 Vert.X-Web 和异步编程,web服务和redis服务之间通过 ...

    VC 结合Java编程的实例.rar

    一个简单的VC 结合Java编程的实例,演示在JAVA和VC 之间互相传递消息,接收消息并以弹出框的形式显示,此为简单的例子,在一些大型项目中,多种语言混合编程是程序员必备的技能,一个程序员不可能只会一种编程语言,...

    codeutil_springcloudvue_代码生成_javavue_java_swagger_

    用户只需建立数据库表结构,简单的几步操作就可以快速生成可以运行的一整套代码,可以极大地缩短开发周期,降低人力成本。该软件内置了当前java和前端主流的架构模板,如SSM+dubbo 、springBooot+springCloud+spring...

Global site tag (gtag.js) - Google Analytics