设计模式开卷考试给的例子代码都是一个类一个java,实在太恶心了,所以写了一个python脚本.

import os
fileansdir=r'C:\Users\tonyson_in_the_rain\Desktop\笔记\JAVA代码\设计模式'

主要用的os库

API总结:

  • files=listdir(path) 显示当前目录的所有文件名和目录名
  • endswith() 选择扩展名
  • windows的路径只需要前面加一个r即可在python程序中使用
  • 把合并的文件在当前目录保存,也可以改成某一目录保存,但是要注意名字

combine函数是一个子过程,可以把dirpath目录下的所有文件合并为一个文件

def combine(dirPath,filename):
files=os.listdir(dirPath)
res=""
i = 0
for file in files:
if file.endswith(".java"):
i+=1
title=file with open(dirPath+'\\'+file,"r")as file:
content=file.read()
file.close()
res+='\n\n' res+='#### '+title
res+='\n\n'
res+='```\n'
res+=content
res+='\n```\n' with open(dirPath+'\\'+filename+'.txt','w')as outFile:
outFile.write(res)
outFile.close()

然后遍历各个文件夹分别跑一遍子过程即可

import os

def EnumPathFiles(path, callback):
ii=0
if not os.path.isdir(path):
print('Error:"',path,'" is not a directory or does not exist.')
return
list_dirs = os.walk(path) for root, dirs, files in list_dirs: for d in dirs:
EnumPathFiles(os.path.join(root, d), callback)
dirc=path+'\\'+d
print(dirc)
if(dirc.endswith('memento')):
continue
ii+=1
name=d combine(dirc,name) def callback1(path, filename):
print(path+'\\'+filename) EnumPathFiles(r'C:\Users\tonyson_in_the_rain\Desktop\大三上学习\设计模式\设计模式2018(张欣佳)', callback1)

这里会报一个错误,因为子目录对不上号的原因,不过在这之前有用的目录我们已经跑过了,所以不用管了.

合成的md文件如下:不过是按照类名字典序排的,需要手动调整顺序

Apple.java

public class Apple implements Product
{
public void accept(Visitor visitor)
{
visitor.visit(this);
}
}

Book.java

public class Book implements Product
{
public void accept(Visitor visitor)
{
visitor.visit(this);
}
}

BuyBasket.java

import java.util.*;

public class BuyBasket
{
private ArrayList list=new ArrayList(); public void accept(Visitor visitor)
{
Iterator i=list.iterator(); while(i.hasNext())
{
((Product)i.next()).accept(visitor);
}
} public void addProduct(Product product)
{
list.add(product);
} public void removeProduct(Product product)
{
list.remove(product);
}
}

Client.java

public class Client
{
public static void main(String a[])
{
Product b1=new Book();
Product b2=new Book();
Product a1=new Apple();
Visitor visitor; BuyBasket basket=new BuyBasket();
basket.addProduct(b1);
basket.addProduct(b2);
basket.addProduct(a1); visitor=(Visitor)XMLUtil.getBean(); visitor.setName("张三"); basket.accept(visitor);
}
}

Customer.java

public class Customer extends Visitor
{
public void visit(Apple apple)
{
System.out.println("顾客" + name + "选苹果。");
} public void visit(Book book)
{
System.out.println("顾客" + name + "买书。");
}
}

Product.java

public interface Product
{
void accept(Visitor visitor);
}

Saler.java

public class Saler extends Visitor
{
public void visit(Apple apple)
{
System.out.println("收银员" + name + "给苹果过秤,然后计算其价格。");
} public void visit(Book book)
{
System.out.println("收银员" + name + "直接计算书的价格。");
}
}

Visitor.java

public abstract class Visitor
{
protected String name; public void setName(String name)
{
this.name=name;
} public abstract void visit(Apple apple); public abstract void visit(Book book);
}

用python将项目中的所有代码(或txt)合并在一个文件中的更多相关文章

  1. 如何在一个文件中写多个Vue组件(译-有删改)

    原文地址 Writing multiple Vue components in a single file 在一个文件中编写多个组件是React的模式,其中一些文件包含多个组件. 走开发过程中,有些组 ...

  2. Linux如何在一个文件中写入内容

    Linux中,在一个文件中写入内容,可以vim打开编辑模式,输入我们想要的内容,此次我们使用echo命令 来在一个文件夹中写入内容. echo命令: 第一种: echo 'i love u' > ...

  3. extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你要放行!”

    extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你要放行!”

  4. pip freeze > requirements.txt` 命令输出文件中出现文件路径而非版本号

    pip freeze > requirements.txt 命令输出文件中出现文件路径而非版本号 解决办法: pip list --format=freeze > requirements ...

  5. Angular项目里Js代码里如何获取Ts文件中的属性数据

    基于之前实现的Angular+ngx-ueditor富文本编辑器做一个简单补充记录,我们在使用Angular开发过程中,难免会使用到调用外部插件Js的应用,但是有的时候又需要在Js文件中调用Ts文件里 ...

  6. 如何将一个Form中的代码拆分到多个文件中

    https://social.msdn.microsoft.com/Forums/en-US/64c77755-b0c1-4447-8ac9-b5a63a681b78/partial-class-fo ...

  7. PE头的应用---插入代码到EXE或DLL文件中

    三.代码实现(DELPHI版本),采用第三种方式实现代码插入. 1. 定义两个类,一个用来实现在内存中建立输入表:一个用来实现对PE头的代码插入. DelphiCode: const MAX_SECT ...

  8. 使用mvc时,在视图view中使用强类型视图,在web.config文件中添加命名空间namespace的引用不起作用,解决方法

    这是view中的model代码: @model t_user_info 这是web.config配置文件只的代码: <namespaces> <add namespace=" ...

  9. MFC中 CString类型用fprintf 函数写到文件中乱码的解决办法

    在上一篇中记录了用fprintf函数写内容到文件中的方法,但是发现了问题:产生的文件字符串有乱码现象. 解决办法:用_ftprintf函数 另外,据说: unicode的话要用fwprintf    ...

随机推荐

  1. chrome浏览器备忘

    记录日常使用Chrome遇到的问题. audio控件播放音频问题 打开http://www.cdfive.com,发现音乐没有自动播放,F12打开控制台发现有如下报错: Uncaught (in pr ...

  2. web前端之es6对象的扩展

    1.属性的简洁表示法 2.属性名表达式 表达式作为对象的属性名 3.方法的 name 属性 例如:函数的name 属性,返回函数名. 4.Object.is() ES 比较两个值是否相等,只有两个运算 ...

  3. ISO/IEC 9899:2011 条款6.2.1——标识符的作用域

    6.2.1 标识符的作用域 1.一个标识符可以表示一个对象:一个函数:一个结构体.联合体或枚举的一个标签或一个成员,一个typedef名:一个标签名:一个宏名:或一个宏形参.相同的标识符可以在程序中不 ...

  4. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_09-课程详情页面静态化-静态页面测试

    4 课程详情页面静态化 4.1 静态页面测试 4.1.1 页面内容组成 我们在编写一个页面时需要知道哪些信息是静态信息,哪些信息为动态信息,下图是页面的设计图: 打开静态页面,观察每部分的内容. 红色 ...

  5. Qt编写自定义控件45-柱状标尺控件

    一.前言 这个控件写了很久了,是最早期的一批控件中的一个,和温度计控件类似,都是垂直的进度条,可以设置不同的背景颜色,左侧的刻度也可以自由设定,还提供了动画效果,其实就是开启定时器慢慢的进度到设定的目 ...

  6. Django之中间件、缓存以及信号

    Django之中间件 中间件执行流程 我们从浏览器发出一个请求 Request,得到一个响应后的内容 HttpResponse ,这个请求传递到 Django的过程如下: 也就是说,每一个请求都是先通 ...

  7. SAP S/4 HANA与SAP Business Suite/R3(ECC)的区别

    转自:https://blog.csdn.net/zhongguomao/article/details/53515203 去年SAP推出了新一代商务套件SAP S/4 HANA,无疑是ERP行业创新 ...

  8. springboot Thymeleaf中格式化jsr310新日期时间类(LocalDateTime,LocalDate)--thymeleaf格式化LocalDateTime,LocalDate等JDK8新时间类

    依赖maven包 <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>th ...

  9. python数据分析数据标准化及离散化详解

    python数据分析数据标准化及离散化详解 本文为大家分享了python数据分析数据标准化及离散化的具体内容,供大家参考,具体内容如下 标准化 1.离差标准化 是对原始数据的线性变换,使结果映射到[0 ...

  10. Cas(01)——简介

    Cas的全称是Centeral Authentication Service,是对单点登录SSO(Single Sign On)的一种实现.其由Cas Server和Cas Client两部分组成,C ...