【问题标题】:moving only some part of files to another folder仅将部分文件移动到另一个文件夹
【发布时间】:2021-11-04 10:34:58
【问题描述】:

大家好,我现在正在尝试将一些文件从一个文件夹移动到另一个文件夹。我拥有的文件是

  • results_1_1
  • results_2_1
  • results_3_1
  • results_1_2
  • results_2_2
  • results_3_2

我想要的是移动文件

  • results_1_1
  • results_2_1
  • results_3_1 到一个文件夹让我们称之为 A

其他

  • results_1_2
  • results_2_2
  • results_3_2 到另一个让我们称之为 B

我不想手动操作,因为实际上我有更多文件

我已经通过 python 创建了一个我想要拥有的新文件夹

到目前为止关于将文件移动到另一个目录

import shutil
source_folder = r"C:/Users/...."
destination_folder= r"C:/Users/...."
files_to_move = ['results_1_3.dat']

for file in files_to_move:
    source = source_folder + file 
    destination = destination_folder + file 
    shutil.move(source,destination)
print("Moved!")

但是使用这个程序,我一次只能移动一个文件,我尝试编写 results_.+3.dat', results*_3.dat' 但我一直看到一个错误

【问题讨论】:

  • 我会使用 for 循环将文件名放入您的 files_to_move 数组中,因为看起来文件名会加一。

标签: python directory file-move


【解决方案1】:

您可以使用os.listdir 查找您目录中的所有文件。

此代码查找名称以“1”结尾的所有文件。

import os
files_to_move = [f for f in os.listdir() if f.split('.')[0][-1] == '1']

如有必要,您还可以添加扩展检查:

files_to_move = [f for f in os.listdir() if f.split('.')[0][-1] == '1' and f.split('.')[1] == 'dat']

【讨论】:

    【解决方案2】:

    您可以使用os.listdir(source_folder)列出您目录中的所有文件

    如果您的目录中有混合文件,您可以使用类似这样的方式选择结果文件

    files_to_move = [x for x in os.listdir(source_folder) if all(j in x for j in ['results', '.dat'])]
    

    然后我会创建一个字典,其中包含与结果文件中的数字相关联的目标文件夹。

    destination_A = r'/path/to/destinationA'
    destination_B = r'/path/to/destinationB'
    
    moving_dict = {
        '1': destination_A,
        '2': destination_B
    }
    

    然后您可以根据文件名移动文件

    for file in files_to_move:
        destination_folder = moving_dict[file[:-4].split('_')[-1]]
        source = source_folder + file 
        destination = destination_folder + file 
        shutil.move(source,destination)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多