目录
STEP1: 读取文件名并存入 e_name_list.txt
STEP2: 全选英文名,放入翻译软件,得到的中文,复制存入c_name_list.txt
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();
}
}