批量翻译英文文件名并修改文件名--- python 版本 && java版本

目录

Python版本

Java版本​

运行演示:

STEP1: 读取文件名并存入 e_name_list.txt

STEP2: 全选英文名,放入翻译软件,得到的中文,复制存入c_name_list.txt

STEP3:修改文件名


Python版本

下载了一些文章,可是连题目都看不懂,还不像一个一个查,一个一个重命名,于是。。。~

我的这个文件夹里,都是pdf文档

扫描二维码关注公众号,回复: 2920539 查看本文章

先执行了一遍程序,当前目录产生一个 name0.txt    存的是所有文件名

全选,放到有道翻译

得到的翻译,全选,复制,当前目录新建 NN0.txt  粘贴

之后再运行一遍程序,大功告成

import os

#读取文件,并存在数组
def read_file_list(file_dir):
    name_List=[]                    #我的文件都有相同的前缀,这是存把前缀去掉的文件名
    ori_name_List=[]                #存原有的文件名
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            ori_name_List.append(os.path.splitext(file)[0])  #[0]是文件名部分,[1]是后缀
            name_List.append(os.path.splitext(file)[0][7:])  #去掉了相同的前缀 “cvpr18-”
    return ori_name_List,name_List

#需要翻译的文章所在路径
file_dir="F:\Book\CVPR-2018\cvpr0"

ori_name_List,name_List=read_file_list(file_dir)


#将读取到的文件名列表传入到txt
f=open("name0.txt","w")
for i in name_List:
    f.write(str(i))
    f.write('\n')
f.close()

#把txt中得到的英文文件名全部复制,有道翻译,把中文复制到NN0.txt中

#从中文名文件中读取数据
china_name=[]
file=open("NN0.txt", 'r')
for fi in file:
    china_name.append(fi.strip())
mix_name=name_List.copy()
l1=len(name_List)
l2=len(china_name)
if l1!=l2:
    print("len error")   #检验一下英文名列表和中文名列表文件数是否一样
else:
    for i in range(l1):
        mix_name[i]=ori_name_List[i]+" "+china_name[i]  #整合名字,得到英文+中文

#修改当期路径
os.chdir(r'F:\Book\CVPR-2018\cvpr0')

#批量修改文件名
for root, dirs, files in os.walk(file_dir):
        for i in range (l1):
            if files[i]==ori_name_List[i]+".pdf":   #匹配下文件名
                os.rename(files[i], mix_name[i]+".pdf")

Java版本


运行演示:


STEP1: 读取文件名并存入 e_name_list.txt

package pp;
import java.util.ArrayList;
import java.util.List;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class E_nameToTXT {  
	
	/*************************
	     将字符串写入文件末尾,一字符串一换行
	***************************/
	static void f_write(File f, String content) {
		FileWriter writer;
		try {
			writer = new FileWriter(f,true);//true代表在末尾写入
			writer.write(content+ "\r\n");//换行了
		    writer.close();
		} catch (IOException e) {
			 System.out.println("错误");
			e.printStackTrace();
		}	 
    }
	
	
	/*************************
              读文件名并写入txt
    *************************/
	 static void ename_to_txt(String fileDir) {
		 
		  //建立 e_name_list.txt  存英文名列表
			File ftxt = new File("e_name_list.txt");
			 try {
				ftxt.createNewFile();
			} catch (IOException e) {
				 System.out.println("创建新文件时出现了错误");
				e.printStackTrace();
			}
			 f_write(ftxt,"");  
			 
			 
			 //清空文件
			 FileWriter writer0;
			 try {
				 writer0 = new FileWriter(ftxt);
				 writer0.write("");
				 writer0.close();
			} catch (IOException e) {
				System.out.println("XX错误");
				e.printStackTrace();
			}
			 
			 
	    //读取英文文件名,并存入 e_name_list.txt
		File F = new File(fileDir);
		List<File> fileList = new ArrayList<File>();
		File[] files = F.listFiles();// 获取目录下的所有文件或文件夹,但是我的文件夹里都是pdf文件
		for (File f : files) {fileList.add(f);}// 遍历,目录下的所有文件
		
		for (File f1 : fileList) {
			String ori_name=f1.getName();//原始文件名
			String name=ori_name.split("pdf")[0]; //去掉尾部  “.pdf ”
			name=name.split("cvpr18-")[1];        //去掉首部   “cvpr18-”
			System.out.println(name);
			f_write(ftxt,name);                  //存入txt
		
		}
	}

	public static void main(String[] args){  
		 String dir="C:/Users/XY Wang/Desktop/temp_code/t0826/cvpr0"; //pdf们所在路径
		 ename_to_txt (dir);
 }
}

得到的文件:

STEP2: 全选英文名,放入翻译软件,得到的中文,复制存入c_name_list.txt

STEP3:修改文件名

package kk;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Updata_name {

/*************************
         读取e_name_list和c_name_list, 将中英文名字整合,存入到e_list
 * @throws IOException 
*************************/
 static void re_name() throws IOException 
 {
	
	List<String> e_list = new ArrayList<String>(); //存中文名
	List<String> c_list = new ArrayList<String>(); //存英文名
	
	FileInputStream inputStream1,inputStream2;
	inputStream1 = new FileInputStream("E:/javawork/rename/e_name_list.txt");
	inputStream2 = new FileInputStream("E:/javawork/rename/c_name_list.txt");
 
     BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(inputStream1));
	 BufferedReader bufferedReader2 = new BufferedReader(new InputStreamReader(inputStream2));
     String str;
     //按行读取
     while((str = bufferedReader1.readLine()) != null)
     {
    	 e_list.add(str);
     }
     while((str = bufferedReader2.readLine()) != null)
     {
    	 c_list.add(str);
     }
     
     //整合名字
     int l1=e_list.size();
     int l2=c_list.size();
     if (l1==l2)   
     	{
    	 for (int i=0;i<l1;i++)
    	 	{
    		 	e_list.set(i,e_list.get(i)+' '+c_list.get(i));
    		 	//System.out.println(e_list.get(i));
    	 	}
     	}
     else 
     {
    	 System.out.println("中英两个文件文件名个数不匹配!");
    	 return ;
     }
     
     
     //修改文件名
     String dir="C:/Users/XY Wang/Desktop/temp_code/t0826/cvpr0"; //pdf们所在路径
     File F = new File(dir);
		File[] files = F.listFiles();// 获取目录下的所有文件或文件夹,但是我的文件夹里都是pdf文件
		List<File> fileList = new ArrayList<File>();
		for (File f : files) {fileList.add(f);}
		
		 for (int i=0;i<l1;i++)
 	 	{
	     File newname = new File("C:/Users/XY Wang/Desktop/temp_code/t0826/cvpr0/"+e_list.get(i)+".pdf");
 		 System.out.println(fileList.get(i).renameTo(newname));//修改成功输出true
 	 	}
  	}
		
		
public static void main(String[] args) throws IOException{  
	
	re_name();
	
    }
}

猜你喜欢

转载自blog.csdn.net/afeiererer/article/details/82010854