鱼C论坛

 找回密码
 立即注册
查看: 1907|回复: 21

[已解决]excel列表对应修改文件名,请问这个怎么操作比较好

[复制链接]
发表于 2021-9-1 22:00:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
excel有两列 假设分别为   

1   a

2  b

3  c
按以上的这样两列,

对应的文件名是a.pdf,b.pdf c.pdf,

现在 我想对应修改a.pdf,b.pdf c.pdf,
为1.pdf,2.pdf ,3.pdf 这要怎么操作呢

就是跟excel列里的名字对应的改一下
最佳答案
2021-9-2 11:06:36
明白了,你试一下在相同目录创建一个.py文件,复制以下代码进去运行一下看看
import os
import pandas as pd

excelname = '新建 XLS 工作簿.xls'     # 这个改成你要读取的excel名
df = pd.read_excel(excelname, header=None)      # 读取 excel 数据
df.columns = ['A', 'B']     # 因为你的excel没有列名,所以手动设置一下列名,方便操作
path = os.getcwd()       # 获取当前目录路径

# 开始修改名字
for i in range(len(df)):
    name1 = os.path.realpath(os.path.join(path, df.B[i]+'.txt'))     # 修改前的文件名绝对路径
    name2 = os.path.realpath(os.path.join(path, df.A[i]+'.txt'))     # 修改后的文件名绝对路径
    os.rename(name1, name2)    # 修改文件名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-1 22:13:32 | 显示全部楼层
pandas吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-1 22:18:57 | 显示全部楼层

可以吗,pands没用过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-1 22:45:09 | 显示全部楼层
swanseabrian 发表于 2021-9-1 22:18
可以吗,pands没用过

pandas就很简单,这样就可以
import pandas as pd

# 创建一个表格(也可以读取现有的excel)
df = pd.DataFrame({'A':[1, 2, 3], 'B':['A', 'B', 'C']})  # 手动创建
# df = pd.read_excel('test.xlsx')   # 读取现有的excel文件

df['A'] = df['A'].astype(str)+'.pdf'
df['B'] = df['B'] + '.pdf'

# 保存结果,生成一个excel
df.to_excel('test.xlsx', index=False)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 08:38:36 | 显示全部楼层
louxinghao 发表于 2021-9-1 22:45
pandas就很简单,这样就可以

我不是要生成excel ,excel是现成的,两列对应,我是要根据excel的对应关系,就改对应的文件名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-2 08:58:35 | 显示全部楼层
swanseabrian 发表于 2021-9-2 08:38
我不是要生成excel ,excel是现成的,两列对应,我是要根据excel的对应关系,就改对应的文件名

一样的啊,生成就是保存结果啊,第8行已经完成了你想要的处理了,你可以print(df)看看嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 10:08:55 | 显示全部楼层
louxinghao 发表于 2021-9-2 08:58
一样的啊,生成就是保存结果啊,第8行已经完成了你想要的处理了,你可以print(df)看看嘛

奥,没看懂,我学习一下,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 10:34:10 | 显示全部楼层
louxinghao 发表于 2021-9-2 08:58
一样的啊,生成就是保存结果啊,第8行已经完成了你想要的处理了,你可以print(df)看看嘛

不是的,你这是自己弄成pdf,问题是pdf文件是现在的存在的,里面有内容的,不是这样生成的,就是把a.pdf替换成1.pdf,而不是生成个1.pdf,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-2 10:36:08 | 显示全部楼层
没太明白你是啥意思,建议你截个图说明一下你的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 10:36:55 | 显示全部楼层
swanseabrian 发表于 2021-9-2 10:34
不是的,你这是自己弄成pdf,问题是pdf文件是现在的存在的,里面有内容的,不是这样生成的,就是把a.pdf替 ...

就是说我现在要批量改文件名,文件名是第二列的名字,我要批量改成第一列的名字,你给我的代码是生成不是改名啊,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 10:45:28 | 显示全部楼层
louxinghao 发表于 2021-9-2 10:36
没太明白你是啥意思,建议你截个图说明一下你的意思


                               
登录/注册后可看大图

就像这样,文件是现在的了,我要改名字,对应excel表来改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-2 11:06:36 | 显示全部楼层    本楼为最佳答案   
明白了,你试一下在相同目录创建一个.py文件,复制以下代码进去运行一下看看
import os
import pandas as pd

excelname = '新建 XLS 工作簿.xls'     # 这个改成你要读取的excel名
df = pd.read_excel(excelname, header=None)      # 读取 excel 数据
df.columns = ['A', 'B']     # 因为你的excel没有列名,所以手动设置一下列名,方便操作
path = os.getcwd()       # 获取当前目录路径

# 开始修改名字
for i in range(len(df)):
    name1 = os.path.realpath(os.path.join(path, df.B[i]+'.txt'))     # 修改前的文件名绝对路径
    name2 = os.path.realpath(os.path.join(path, df.A[i]+'.txt'))     # 修改后的文件名绝对路径
    os.rename(name1, name2)    # 修改文件名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 11:14:26 | 显示全部楼层
louxinghao 发表于 2021-9-2 11:06
明白了,你试一下在相同目录创建一个.py文件,复制以下代码进去运行一下看看

你这是先把文件生成一份出来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 11:15:41 | 显示全部楼层
louxinghao 发表于 2021-9-2 11:06
明白了,你试一下在相同目录创建一个.py文件,复制以下代码进去运行一下看看

现在第一列的文件不存在,是怎么获得路径的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-2 11:45:15 | 显示全部楼层
还是没大搞懂你要做啥,要不你学习一下读取 excel 的方法和 os 方法吧,我这样写给你也没啥用

读取excel有很多工具
1. pandas 是最多人用的数据处理相关的库,不仅仅能读写excel,支持超多格式,建议学习一下
2. xlrd 这个最轻量化的 excel 表格读取的库,仅限读取,像你今天的这个就可以用 xlrd,因为不涉及 excel 内的数据处理
3. xlwings 这个是最强大的 excel 处理库,有时间也可以了解一下
4. openpyxl、xlsxwriter... 这些也都可以操作 excel 数据

os 是 python 自带的模块,修改文件名用到的 rename 方法就是这里面的,每个人都需要了解的一个模块

学会了以上的的方法,可以满足你这些需求了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-2 12:30:00 | 显示全部楼层
os模块可以不用 pathlib模块改名更简单 同为标准库 后者更清晰  os这个模块是很乱的
无论是pandas还是openpyxl都是第三方模块 可以把电子表格另存为csv文件后用csv模块处理 这个是标准库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 14:55:05 | 显示全部楼层
louxinghao 发表于 2021-9-2 11:45
还是没大搞懂你要做啥,要不你学习一下读取 excel 的方法和 os 方法吧,我这样写给你也没啥用

读取excel ...

你的意思是不存在的就是先改了了名字放到内存里,然后再替换存在的内容是吗,我还没演示,今天有点忙
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-2 14:56:10 | 显示全部楼层
kogawananari 发表于 2021-9-2 12:30
os模块可以不用 pathlib模块改名更简单 同为标准库 后者更清晰  os这个模块是很乱的
无论是pandas还是open ...

pathlib还真没用过,一直用os模块 关键网上代码用的都是os这个库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-2 15:03:30 | 显示全部楼层
kogawananari 发表于 2021-9-2 12:30
os模块可以不用 pathlib模块改名更简单 同为标准库 后者更清晰  os这个模块是很乱的
无论是pandas还是open ...

没必要过分强调标准库,能完成自己的需求就 ok 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-9-2 15:04:34 | 显示全部楼层
swanseabrian 发表于 2021-9-2 14:56
pathlib还真没用过,一直用os模块 关键网上代码用的都是os这个库

你这个需求shutil模块 shutil.move(path)是最简单的

pathlib主要是不分\\和/ 统一使用   /   而且pathlib.Path对象之间join也可用 /

最关键的是 pathlib.Path对象是完全兼容os shutil 和open函数的  代替字符串的路径使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 13:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表