首页 > 解决方案 > 如何将新文件保存到其他目录

问题描述

我想在新目录中保存一些元素。不同文件按类型分类。我想使用每个不同的 id,将它们保存在一个新目录中(每个类一个目录)。

Listes = [index_birch, index_maple, index_asp, index_ash, index_oak]
Liste_name = ["index_birch", "index_maple", "index_asp", "index_ash"," index_oak"]
path_final = r"C:\Desktop\Université_2019_2020\CoursS2_Mosef\Stage\Data\Grand_Leez\shp\Test_sur_newdta\Test_prediction"
    


list_index_fi = os.listdir(r"C:\Desktop\Université_2019_2020\CoursS2_Mosef\Stage\Data\Grand_Leez\shp\Test_sur_newdta\Test_prediction")`

    itera=0
    for liste in Liste_name:
        new_path = Liste_name[itera]
        dir_name = os.path.join(path_final,new_path)
        os.makedirs(dir_name)
        itera+=1
        for i, npfile in enumerate(Listes):
            value = npfile
            for j, k in enumerate(list_index_fi):
                if value in k:
                    shutil.move(os.path.join(path_final,j), dir_name)
                else:
                     pass

当我使用此代码时,我收到消息:'in string' 需要字符串作为左操作数,而不是列表

我知道我的错误来自这样一个事实,即变量是一个字符串列表(Listes == list of list)而不是字符串。我应该如何遍历我的列表以查看其元素是否对应于我的 os.listdir 命令的某个值?

注意:列表=列表列表

0
['3007', '3008', '3012', '3020', '3022', '3023', '3024', '3027', '3029', '3032', '3033', '3035', '3047', '3050', '3056', '3065', '3066', '3079', '3080', '3089', '3090', '3098']
1
['3000', '3001', '3006', '3011', '3013', '3025', '3026', '3028', '3036', '3043', '3053', '3059', '3060', '3061', '3074', '3077', '3082', '3083', '3085', '3094']
2
[]
3
[]
4
['3002', '3003', '3004', '3005', '3009', '3010', '3014', '3015', '3016', '3017', '3018', '3019', '3021', '3030', '3031', '3034', '3037', '3038', '3039', '3040', '3041', '3042', '3044', '3045', '3046', '3048', '3049', '3051', '3052', '3054', '3055', '3057', '3058', '3062', '3063', '3064', '3067', '3068', '3069', '3070', '3071', '3072', '3073', '3075', '3076', '3078', '3081', '3084', '3086', '3087', '3088', '3091', '3092', '3093', '3095', '3096', '3097', '3099']

谢谢

标签: pythonloopsoperating-systemsaveshutil

解决方案


您可以简单地遍历主列表以获取内部列表,然后遍历内部列表并执行您想要执行的操作。如果错误是它需要一个字符串。您可以检查提供的输入变量的类型。它现在应该将输入类型输出为列表,但是输入类型字符串应该是正确的。


推荐阅读