简化,我有一个数据文件:
P.A2057.ACO.QASSGN.D150218.T1200333.xls
我成功将其复制到目录" MSSP_DATA_ARCHIVE"这里的文档:
dest_dir = "C:/Users/Office/Desktop/TEST/MSSP_DATA_ARCHIVE/"
for file in glob.glob(r'C:/Users/Office/Desktop/TEST/LOAD/*.xls'):
print file
shutil.copy(file, dest_dir)
我想重命名仍然坐在" LOAD"对此:
QASSGN.xls
我不会每月知道文件的确切名称(对于某些元素,似乎至少部分是随机生成的)。
我希望将当前文件名子串起来以提取上面所需的名称。
以下是我的开始:
for file in glob.glob(r'C:/Users/Office/Desktop/TEST/LOAD/*.xls'):
parts = file.split('.')
parts = ['C:/Users/Office/Desktop/TEST/LOAD\\P',
'A2057', 'ACO', 'QASSGN', 'D150218', 'T1200333','xls']
我知道必须有更好的方法来处理 os.path.splitext 和 os.rename ,以避免进入"魔术数字&#34 ;麻烦。不是非常pythonic。
任何指示都将非常感谢!
答案 0 :(得分:1)
这假设您的输入始终作为文件名中第4部分的所需名称。只有一件事是一个神奇的数字,因为我不知道你希望你的数据被命名的另一种方式。
# the path of your files
path = 'C:\\Users\\Office\\Desktop\\TEST\\LOAD'
# the place you want to output your files
# set to input because i have no idea where you want them
dest_path = path
# the type of files you want to rename
ext = r'xls'
# file will contain the path of the file
for file in glob.glob('{path}\\*.{ext}'.format(path=path, ext=ext)):
# the filename we are going to change (dont want the path at all)
name = file.split('\\')[-1]
# the new name of the file
new_file = '{path}\\{name}.{ext}'.format(
path=dest_path,
name=name.split('.')[3],
ext=ext
)
os.rename(file, new_file)