用python將項目中的全部代碼(或txt)合併在一個文件中

設計模式開卷考試給的例子代碼都是一個類一個java,實在太噁心了,因此寫了一個python腳本.java

import os
fileansdir=r'C:\Users\tonyson_in_the_rain\Desktop\筆記\JAVA代碼\設計模式'

主要用的os庫python

API總結:windows

  • 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()

而後遍歷各個文件夾分別跑一遍子過程便可app

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);
}
相關文章
相關標籤/搜索