首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个文件移动到具有条件的多个目录中

将多个文件移动到具有条件的多个目录中
EN

Stack Overflow用户
提问于 2020-07-25 21:23:05
回答 1查看 168关注 0票数 0

我有多个文件,其第一列包含标识符"COM1-11“、"COM1-12”、"COM1-13“、"COM1-14”、“Com1-15”和"COM1-16“--文件名没有标识符-

文件的第一列如下所示:

“设备名称:ABC(Com1-11)设备类型:ABC.日期:2020-07-14 10:46:59”

然后,我想以"COM1-11“部分作为标识符,并将文件移动到相应的文件夹"11”、"12“、"13”、"14“、"15”和"16“文件夹中。

到目前为止,我所达到的目标是:

代码语言:javascript
复制
import codecs
import pandas as pd
import shutil
import os

Raw_data_folder = r'C:\Users\Downloads\move_file_test'
files=os.listdir(Raw_data_folder)

Folder_11=r"C:\Users\Downloads\wished_dest\11"
Folder_12=r"C:\Users\Downloads\wished_dest\12"
Folder_13=r"C:\Users\Downloads\wished_dest\13"
Folder_14=r"C:\Users\Downloads\wished_dest\14"
Folder_15=r"C:\Users\Downloads\wished_dest\15"
Folder_16=r"C:\Users\Downloads\wished_dest\16"

然后,

代码语言:javascript
复制
for f in files:
    doc=codecs.open(os.path.join(Raw_data_folder,f),'rU','UTF-16')
    identifier_1 = pd.read_csv(doc, sep='\t',nrows=0)
    identifier_2 = identifier_1 .columns.str[21:28]
    Folder_identifier=identifier_2 [0]
    
    if Folder_identifier=="COM1-11":
        shutil.move(os.path.join(Raw_data_folder,f),Folder_11)
    elif Folder_identifier=="COM1-12":
        shutil.move(os.path.join(Raw_data_folder,f),Folder_12)
    elif Folder_identifier=="COM1-13":
        shutil.move(os.path.join(Raw_data_folder,f),Folder_13)
    elif Folder_identifier=="COM1-14":
        shutil.move(os.path.join(Raw_data_folder,f),Folder_14)
    elif Folder_identifier=="COM1-15":
        shutil.move(os.path.join(Raw_data_folder,f),Folder_15)
    else: 
        shutil.move(os.path.join(Raw_data_folder,f),Folder_16)

当我运行它时,它只将第一个文件移动到相应的文件夹中--第一个文件具有"COM-11“,然后移动到"11”文件夹。然后,留下以下错误消息:

代码语言:javascript
复制
PermissionError: [WinError 32] The process cannot access the file
because it is being used by another process:
'C:\\Users\\Downloads\\move_file_test\\Data_20200714_104659741.csv'

整个文件肯定缺少for循环,但我还没有通过。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-27 18:46:57

尝试在for循环:doc.close()中if- the语句之前关闭该文件。

代码语言:javascript
复制
for f in files:
    doc=codecs.open(os.path.join(Raw_data_folder,f),'rU','UTF-16')
    identifier_1 = pd.read_csv(doc, sep='\t',nrows=0)
    identifier_2 = identifier_1 .columns.str[21:28]
    Folder_identifier=identifier_2 [0]
    
    # Close the file
    doc.close()

    if Folder_identifier=="COM1-11":
        shutil.move(os.path.join(Raw_data_folder,f),Folder_11)
    # ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63093696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档