Python截断未知文件名

2024-10-04 11:24:43 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我在一个目录中有以下文件:

snackbox_1a.dat
zebrabar_3z.dat
cornrows_00.dat
meatpack_z2.dat

我有几个这样的目录,其中所有的文件都是相同的格式,即:

^{pr2}$

所以我对这些文件的了解是第一位的(snackbox,zebrabar,cornrows,meatpack)。不知道文件的扩展名是什么。这会在目录中跨文件和跨目录进行更改(因此另一个目录可能有不同的xx值,如12、yy、2m、0t等等)。在

有没有办法让我重命名所有这些文件,或者将它们全部截断(因为年月日将总是相同的长度),以便在尝试调用它们时使用方便?例如,我想重命名它们,这样我就可以在另一个脚本中使用一个简单的索引单步执行并找到我想要的文件(而不是必须进入每个目录并手动拉出文件)。在

换句话说,我希望将文件名更改为:

snackbox.dat
zebrabar.dat
cornrows.dat
meatpack.dat

谢谢!在


Tags: 文件目录脚本格式dat重命名xx办法
3条回答

此解决方案重命名当前目录中与函数调用中的模式匹配的所有文件。在

函数的作用

snackbox_5R.txt  >>>  snackbox.txt
snackbox_6y.txt  >>>  snackbox_0.txt
snackbox_a2.txt  >>>  snackbox_1.txt
snackbox_Tm.txt  >>>  snackbox_2.txt

让我们看看函数输入和一些示例。在

这是一个字符串列表。其中每个字符串是不带_??部分的文件名。在

示例:

  • ['snackbox.txt', 'zebrabar.txt', 'cornrows.txt', 'meatpack.txt', 'calc.txt']

  • ['text.dat']

upper_bound=1000这是一个整数。当理想的文件名已经存在时,例如snackbox.dat已经存在,如果需要,它将创建snackbox_0.dat,直到snackbox_9999.dat。你不应该改变默认值。在


代码

^{pr2}$

您可以使用shutil.move移动文件。要计算新文件名,可以使用Python的stringsplit方法:

original_name = "snackbox_12.dat"
truncated_name = original.split("_")[0] + ".dat"

尝试re.sub

import re
filename = 'snackbox_xx.dat'
filename_new = re.sub(r'_[A-Za-z0-9]{2}', '', filename)

您应该为filename_new获得{}

这假设“”后面的两个字符要么是数字,要么是小写/大写字母,但您可以选择扩展正则表达式中包含的类。在

编辑:包括移动和recursive search

^{pr2}$

相关问题 更多 >