【发布时间】:2021-05-02 12:51:52
【问题描述】:
我在这里看到了很多类似问题的答案,但由于我的 Python 技能初露端倪,我似乎还不能完全适应它。我想节省单独抓取包含我需要在 R 中进行分析的数据集的时间,但我的脚本要么没有运行,要么似乎在做我需要的事情。
我需要 1) 循环遍历父文件夹中的大量子文件夹,2) 遍历这些子文件夹中的 .csv 文件并选择重要的 1(匹配下面的文本)和 3) 将其复制到一个新的干净文件夹,里面只有我想要的。
我尝试过的:
1)
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_Intensity_Sum 等是我复制文件所需的确切模式
- 这实际上并没有复制任何内容
- 制作一个可以做到这一点的函数:
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'
那是因为这是我希望它通过的子文件夹!我尝试了其他方法,但在我的脚本中没有记录。
【问题讨论】:
-
好吧,如果
dstDir不存在,你需要先创建它...见makedirs -
它确实存在 - 我可以截图显示它是在指定位置创建的
-
错过了那部分代码...为什么不在
print(csv_file)循环内添加print(csv_file)。检查它是否找到了一些东西 -
请阅读How to debug small programs。您还可以使用Python-Tutor,这有助于逐步可视化代码的执行。
-
不,我是说我是在 Windows 中制作的。除非它会直观地显示一个文件夹并且它实际上并不存在,否则我不确定还能说什么。
标签: python loops pattern-matching subdirectory file-copying