用python将项目中的所有代码(或txt)合并在一个文件中
设计模式开卷考试给的例子代码都是一个类一个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)合并在一个文件中的更多相关文章
- 如何在一个文件中写多个Vue组件(译-有删改)
原文地址 Writing multiple Vue components in a single file 在一个文件中编写多个组件是React的模式,其中一些文件包含多个组件. 走开发过程中,有些组 ...
- Linux如何在一个文件中写入内容
Linux中,在一个文件中写入内容,可以vim打开编辑模式,输入我们想要的内容,此次我们使用echo命令 来在一个文件夹中写入内容. echo命令: 第一种: echo 'i love u' > ...
- extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你要放行!”
extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你要放行!”
- pip freeze > requirements.txt` 命令输出文件中出现文件路径而非版本号
pip freeze > requirements.txt 命令输出文件中出现文件路径而非版本号 解决办法: pip list --format=freeze > requirements ...
- Angular项目里Js代码里如何获取Ts文件中的属性数据
基于之前实现的Angular+ngx-ueditor富文本编辑器做一个简单补充记录,我们在使用Angular开发过程中,难免会使用到调用外部插件Js的应用,但是有的时候又需要在Js文件中调用Ts文件里 ...
- 如何将一个Form中的代码拆分到多个文件中
https://social.msdn.microsoft.com/Forums/en-US/64c77755-b0c1-4447-8ac9-b5a63a681b78/partial-class-fo ...
- PE头的应用---插入代码到EXE或DLL文件中
三.代码实现(DELPHI版本),采用第三种方式实现代码插入. 1. 定义两个类,一个用来实现在内存中建立输入表:一个用来实现对PE头的代码插入. DelphiCode: const MAX_SECT ...
- 使用mvc时,在视图view中使用强类型视图,在web.config文件中添加命名空间namespace的引用不起作用,解决方法
这是view中的model代码: @model t_user_info 这是web.config配置文件只的代码: <namespaces> <add namespace=" ...
- MFC中 CString类型用fprintf 函数写到文件中乱码的解决办法
在上一篇中记录了用fprintf函数写内容到文件中的方法,但是发现了问题:产生的文件字符串有乱码现象. 解决办法:用_ftprintf函数 另外,据说: unicode的话要用fwprintf ...
随机推荐
- VM 15 永久激活密钥
VMware Workstation 15 永久激活密钥 YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8 UG5J2-0ME12-M89WY-NPWXX-WQH88 UA5 ...
- WGS84 2 GCJ-02
#include ; ) { x=-x; ff=; } cc=) ff=; ) ff=; } x=tt; ss=x; s2=x; tt=tt*tt; s2=s2*tt; ss=ss-s2* ) ss= ...
- 010-centos 端口问题
1.nmap 安装 yum install nmap #输入y安装 使用 nmap localhost #查看主机当前开放的端口 nmap -p 1024-65535 local ...
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_05-方法授权-方法授权测试
这是我们课程的服务里面 加了授权的方法 重启课程管理的服务 首先需要登陆 在redis复制token 访问课程列表 用最新复制的令牌 最新token可以 调用teachplan方法 调用 一个没加注解 ...
- Qt编写自定义控件44-天气仪表盘
一.前言 天气仪表盘控件是所有控件中唯一一个使用了svg矢量图的控件,各种天气图标采用的矢量图,颜色变换采用动态载入svg的内容更改生成的,其实也可以采用图形字体来做,本次控件为了熟悉下svg在Qt中 ...
- APP手工项目02-用例编写-测试报告-fiddler弱网测试
回顾 APP专项测试(兼容性,安装,卸载,升级,交叉事件,PUSH消息,性能,其他类型) 项目环境(开发环境,测试环境,准生产环境,生产环境) APP内测发布平台(蒲公英,fir.im)支持apk,i ...
- 123457---脑筋急转弯01--com.threeObj03.JiZhuanWan
脑筋急转弯01--com.threeObj03.JiZhuanWan
- 常用SQL50句
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...
- delphi 根据特殊符号字符获取字符串前或后的字符
function GetBefore(substr, str:string):string; {©Drkb v.3(2007): www.drkb.ru, ®Vit (Vitaly Nevzorov) ...
- 修改iPhone5s crash 问题