swanseabrian 发表于 2021-9-1 22:00:06

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

excel有两列 假设分别为   

1   a

2b

3c
按以上的这样两列,

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

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

就是跟excel列里的名字对应的改一下

louxinghao 发表于 2021-9-1 22:13:32

pandas吗?

swanseabrian 发表于 2021-9-1 22:18:57

louxinghao 发表于 2021-9-1 22:13
pandas吗?

可以吗,pands没用过

louxinghao 发表于 2021-9-1 22:45:09

swanseabrian 发表于 2021-9-1 22:18
可以吗,pands没用过

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

# 创建一个表格(也可以读取现有的excel)
df = pd.DataFrame({'A':, '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)

swanseabrian 发表于 2021-9-2 08:38:36

louxinghao 发表于 2021-9-1 22:45
pandas就很简单,这样就可以

我不是要生成excel ,excel是现成的,两列对应,我是要根据excel的对应关系,就改对应的文件名

louxinghao 发表于 2021-9-2 08:58:35

swanseabrian 发表于 2021-9-2 08:38
我不是要生成excel ,excel是现成的,两列对应,我是要根据excel的对应关系,就改对应的文件名

一样的啊,生成就是保存结果啊,第8行已经完成了你想要的处理了,你可以print(df)看看嘛

swanseabrian 发表于 2021-9-2 10:08:55

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

奥,没看懂,我学习一下,谢谢

swanseabrian 发表于 2021-9-2 10:34:10

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

不是的,你这是自己弄成pdf,问题是pdf文件是现在的存在的,里面有内容的,不是这样生成的,就是把a.pdf替换成1.pdf,而不是生成个1.pdf,

louxinghao 发表于 2021-9-2 10:36:08

没太明白你是啥意思,建议你截个图说明一下你的意思

swanseabrian 发表于 2021-9-2 10:36:55

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

就是说我现在要批量改文件名,文件名是第二列的名字,我要批量改成第一列的名字,你给我的代码是生成不是改名啊,

swanseabrian 发表于 2021-9-2 10:45:28

louxinghao 发表于 2021-9-2 10:36
没太明白你是啥意思,建议你截个图说明一下你的意思

https://img.alicdn.com/imgextra/i4/432465746/O1CN01WP6j2g1sJiUqd9BNQ_!!432465746.jpg
就像这样,文件是现在的了,我要改名字,对应excel表来改

louxinghao 发表于 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+'.txt'))   # 修改前的文件名绝对路径
    name2 = os.path.realpath(os.path.join(path, df.A+'.txt'))   # 修改后的文件名绝对路径
    os.rename(name1, name2)    # 修改文件名

swanseabrian 发表于 2021-9-2 11:14:26

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

你这是先把文件生成一份出来?

swanseabrian 发表于 2021-9-2 11:15:41

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

现在第一列的文件不存在,是怎么获得路径的?

louxinghao 发表于 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 方法就是这里面的,每个人都需要了解的一个模块

学会了以上的的方法,可以满足你这些需求了

kogawananari 发表于 2021-9-2 12:30:00

os模块可以不用 pathlib模块改名更简单 同为标准库 后者更清晰os这个模块是很乱的
无论是pandas还是openpyxl都是第三方模块 可以把电子表格另存为csv文件后用csv模块处理 这个是标准库

swanseabrian 发表于 2021-9-2 14:55:05

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

读取excel ...

你的意思是不存在的就是先改了了名字放到内存里,然后再替换存在的内容是吗,我还没演示,今天有点忙

swanseabrian 发表于 2021-9-2 14:56:10

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

pathlib还真没用过,一直用os模块 关键网上代码用的都是os这个库

louxinghao 发表于 2021-9-2 15:03:30

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

没必要过分强调标准库,能完成自己的需求就 ok 了

kogawananari 发表于 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函数的代替字符串的路径使用
页: [1] 2
查看完整版本: excel列表对应修改文件名,请问这个怎么操作比较好