Python将文件名与文件夹名进行比较

2024-10-03 13:16:48 发布

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

我刚刚启动python,我必须比较文件名和文件夹名,才能启动好的sh脚本。(我正在使用气流)

import glob
import os
import shutil
from os import path

odsPath = '/apps/data/02_ODS/'
receiptPath = '/apps/data/80_DATA/01_Receipt/'


for files in os.listdir(receiptPath):
    if(files.startswith('MEM_ZMII') or files.startswith('FMS') and files.endswith('.csv')):
        parsedFiles = files.split('_')
        pattern = '_'.join(parsedFiles[0:2])
        fileName = '_'.join(parsedFiles[2:5])
        fileName = fileName.split('-')[0].lower()
        # print('appCode: ', pattern)
        # print('fileName: ', fileName)


for odsFolder in os.listdir(odsPath):
    if(odsFolder == fileName):
        print('it exist: ', str(fileName))
    else:
        print('it\'s not')

我在receiptPath中得到了3个文件,它只匹配1个文件,但其他文件不匹配。有人能帮我吗

非常感谢


Tags: apps文件inimportfordataifos
1条回答
网友
1楼 · 发布于 2024-10-03 13:16:48

好的,您的问题是您覆盖了变量fileName,因此在第一个for循环的末尾,它只保留最后一个值,即material_makt。解决方案包括将所有文件名保存在一个列表fileNames_list中,然后您可以选中if (odsFolder in fileNames_list)

import glob
import os
import shutil
from os import path

odsPath = '/apps/data/02_ODS/'
receiptPath = '/apps/data/80_DATA/01_Receipt/'


fileNames_list = []
for files in os.listdir(receiptPath):
    if(files.startswith('MEM_ZMII') or files.startswith('FMS') and files.endswith('.csv')):
        parsedFiles = files.split('_')
        pattern = '_'.join(parsedFiles[0:2])
        fileName = '_'.join(parsedFiles[2:5])
        fileName = fileName.split('-')[0].lower()
        fileNames_list.append(fileName)

for odsFolder in os.listdir(odsPath):
    if (odsFolder in fileNames_list):
        print('it exist:', str(odsFolder))
    else:
        print('it\'s not')

输出:

it exist: zcormm_familymc
it exist: kpi_obj_data
it exist: material_makt

相关问题 更多 >