gpt4 book ai didi

python - 根据不同文件夹中的名称重命名文件夹中的文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:38 24 4
gpt4 key购买 nike

我有 2 个文件夹,每个文件夹都有相同数量的文件。我想根据文件夹 1 中的文件名重命名文件夹 2 中的文件。因此,在文件夹 1 中可能有三个文件,标题为:

陆地卫星_1,陆地卫星_2,Landsat_3

在文件夹 2 中,这些文件被称为:

1,2、3

我想根据文件夹 1 的名称重命名它们。我考虑过将每个文件夹的项目名称转换为 .txt 文件,然后将 .txt 文件转换为列表,然后重命名,但我不确定这是否是最好的方法。有什么建议么?

编辑:

我已经简化了上面的文件名,因此仅附加 Landsat_ 对我来说不起作用。

文件夹 1 中的真实文件名更像是 LT503002011_band1、LT5040300201_band1、LT50402312_band4。在文件夹 2 中,它们是 extract1、extract2、extract3。总共有 500 个文件,在文件夹 2 中,它只是提取的运行计数和每个文件的编号。

最佳答案

正如有人所说,“对每个列表进行排序并将它们压缩在一起以便重命名”。

注释:

  • key() 函数提取所有数字,以便 sorted() 可以根据嵌入的数字对列表进行数字排序。
  • 我们对两个列表进行排序:os.listdir() 以任意顺序返回文件。
  • for 循环是使用 zip 的常见方法:for itemA, itemB in zip(listA, listB):
  • os.path.join() 提供可移植性:不用担心 /\
  • Windows 上的典型调用:python doit.py c:\data\lt c:\data\extract,假设这些是您所描述的目录。
  • 对 *nix: 的典型调用:python doit.py ./lt ./extract

 

import sys
import re
import os

assert len(sys.argv) == 3, "Usage: %s LT-dir extract-dir"%sys.argv[0]
_, ltdir, exdir = sys.argv

def key(x):
return [int(y) for y in re.findall('\d+', x)]
ltfiles = sorted(os.listdir(ltdir), key=key)
exfiles = sorted(os.listdir(exdir), key=key)

for exfile,ltfile in zip(exfiles, ltfiles):
os.rename(os.path.join(exdir,exfile), os.path.join(exdir,ltfile))

关于python - 根据不同文件夹中的名称重命名文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31897251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com