将符合特定文本模式的所有.csv文件从多个子文件夹移动到新文件夹[Python]

2024-05-13 20:03:42 发布

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

我在这里看到了许多关于类似问题的答案,但由于我刚刚起步的Python技能,我似乎还不能完全适应它。我想节省单独获取数据集的时间,这些数据集包含我在R中分析所需的内容,但我的脚本要么没有运行,要么似乎做了我需要的事情

我需要1)循环浏览父文件夹中的大量子文件夹,2)循环浏览这些子文件夹中的bagillion.csv文件,找出重要的1(匹配下面的文本),3)将其复制到一个新的干净文件夹,其中只包含我想要的内容

我尝试过的:

(一)

import os, shutil, glob

src_fldr = 'C:/project_folder_withsubfolders'; 

dst_fldr = 'C:/project_folder_withsubfolders/subfolder_to_dump_into'; 

try:
  os.makedirs(dst_fldr); ## it creates the destination folder
except:
  print ("Folder already exist or some error");

for csv_file in glob.glob(src_fldr+'*statistics_Intensity_Sum_Ch=3_Img=1.csv*'):
    shutil.copy2(csv_file, dst_fldr);

其中,文本statistics\u Intensity\u Sum等正是我复制文件所需的模式

  • 这实际上没有复制任何内容
  1. 制作一个可以实现此目的的函数:
srcDir = 'C:/project_folder_withsubfolders'
dstDir = 'C:/project_folder_withsubfolders/subfolder_to_dump_into'
def moveAllFilesinDir(srcDir, dstDir):
    files = os.listdir(srcDir)
    for f in files:
        if f.find("statistics_Intensity_Sum_Ch=3_Img=1"):
            shutil.move(f, dstDir)
        else:
            shutil.move(f, srcDir)
moveAlllFilesinDir(srcDir, dstDir)
  • 这返回了以下错误:
  File "C:\Users\jbla12\AppData\Local\Programs\Python\Python39\lib\shutil.py", line 806, in move
    os.rename(src, real_dst)
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'F1 converted' -> 'C:/Users/jbla12/Desktop/R Analyses/p65_project/sum_files\\F1 converted' 

那是因为那是一个子文件夹,我想让它通过!我尝试过其他方法,但在我的脚本中没有它们的记录


Tags: csvsrcproject文件夹内容osfolderglob
1条回答
网友
1楼 · 发布于 2024-05-13 20:03:42

已解决: 特别感谢“自动化无聊的东西”

import shutil
import os

dest = 'C:/Users/jbla12/Desktop/R Analyses/p65_project/sum_files/'
src = 'C:/Users/jbla12/Desktop/R Analyses/p65_project/'
txt_ID = 'statistics_Intensity_Sum_Ch=3_Img=1.csv'
def moveSpecFiles(txt_ID, src, dest):
    #src is the original file(s) destination
    #dest is the destination for the files to end up in
    #spec_txt is what the files end with that you want to ID
    for foldername, subfolders, filenames in os.walk(src):
        for file in filenames:
            if file.endswith(txt_ID):
                shutil.copy(os.path.join(foldername, file), dest)
    print('Your files are ready sir/madam!')


moveSpecFiles(txt_ID, src, dest)

相关问题 更多 >