Python批量处理文件名

宋正兵 on 2021-02-24

现在有如下目标:

/data 目录下的所有以 .txt 为后缀的文件修改为以 .csv 为后缀。

1、分离文件名与扩展名

利用批量文件处理的代码:

1
2
for root,dirs,files in os.walk(file_path):
for file in files:

可以获得目录中所有文件的文件名,接着对每一个 file 进行以下处理:

1
2
3
portion = os.path.splitext(file)
print(portion)
## output: ('21_D_LED3', '.csv')

2、更换后缀名

此时已经成功的拿到了分离后的文件名和文件后缀,当前的目标是希望修改文件的后缀,于是

  • 判断当前文件的后缀名是否等于 .txt
    • 若等于,则替换为 .csv
1
2
3
if portion[1] == ".txt":
new_name = portion[0] + ".csv"
os.rename(root + "\\" + file, root + "\\" + new_name)

注意:

因为 file 获取的只是文件的文件名,并不是文件路径,当调用 os.rename 时会报错。所以需要以 root + "\\" + file 这样的形式来代表文件所在的路径,再去修改文件的扩展名。

3、完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import pandas as pd
import os
from tqdm.notebook import tqdm

file_path = "data\\"

for root,dirs,files in tqdm(os.walk(file_path)):
for file in files:
# 1、分离文件名和文件的扩展名
portion = os.path.splitext(file)
# 2、当扩展名为要被替换的扩展名时
if portion[1] == ".txt":
new_name = portion[0] + ".csv"
os.rename(root + "\\" + file, root + "\\" + new_name)