初学者问题:我正在尝试重命名目录中的所有.xlsx文件。我理解如何将字符串中的字符替换为另一个字符,但如何删除?更具体地说,我在目录中有多个文件:0123_TEST_01,0456_TEST_02。我试图删除文件名中的前缀,这将导致以下结果:TEST_01,TEST_02。
我正在尝试使用os.rename并将其抛入循环中,但我不确定是否应该使用len()和一些数学来尝试返回正确的命名约定。以下代码是我目前所处的位置。如果这没有意义,请告诉我。感谢。
import os
import shutil
import glob
src_files = os.listdir('C:/Users/acars/Desktop/b')
for file_name in src_files:
os.rename(fileName, filename.replace())
答案 0 :(得分:1)
只需用下划线拆分文件名,忽略第一部分,然后再加入。
>>> file_name = '0123_TEST_01'
>>> '_'.join(file_name.split('_')[1:])
'TEST_01'
您的代码如下所示:
for file_name in src_files:
os.rename(file_name, '_'.join(file_name.split('_')[1:]))
答案 1 :(得分:1)
只需在下划线上拆分一次并使用第二个元素,glob也会找到你所有的xlsx
文件,然后返回完整路径:
from os import path, rename
from glob import glob
src_files = glob('C:/Users/acars/Desktop/b/*.xlsx')
pth = 'C:/Users/acars/Desktop/b/'
for file_name in src_files:
rename(file_name, path.join(pth, path.basename(file_name).split("_",1)[1])
如果您只有xlsx文件且未使用glob,则需要加入路径:
from os import path, rename
from glob import glob
pth = 'C:/Users/acars/Desktop/b'
src_files = os.listdir(pth)
for file_name in src_files:
new = file_name.split("_", 1)[1]
file_name = path.join(pth, file_name)
rename(file_name, path.join(pth, new))