有没有一种方法可以指定一系列文件以供Python在给定目录中循环?

时间:2020-02-03 17:06:06

标签: python file file-conversion

我有一个脚本,它遍历目录中的文件以将它们从一种格式转换为另一种格式。不幸的是,我没有考虑丢失与文件所在的网络驱动器的连接,从而终止脚本的可能性。如果发生错误并作为跟踪脚本进入目录的一种方式,我确实让程序显示了读取的最后一个文件。我想从脚本停止的文件开始而不是从头开始。

下面是我的原始脚本。该脚本从DBF格式转换为CSV。

import os
from dbfread import DBF
import pandas as pd

directory = 'Directory containing files'

for file in os.listdir(directory):

        if file.startswith('File_Prefix') and file.endswith('.DBF'):
            file_path = os.path.join(directory, file)
            print(f'\nReading in {file}...')
            dbf = DBF(file_path)
            dbf.encoding = 'utf-8'
            dbf.char_decode_errors = 'ignore'
            print('\nConverting to DataFrame...')
            df = pd.DataFrame(iter(dbf))
            df.columns.astype(str)
            print(df)
            print('\nWriting to CSV...')
            dest_directory = 'Destination_Directory\\%s.csv' % (File_Prefix + file.strip('.DBF'))
            df.to_csv(dest_directory, index = False)
            print(f'\nConverted {file} to CSV. Moving to next file...')

        elif file.startswith(Another_File_Prefix) and file.endswith('.DBF'):
            print('File not needed.')
            continue
        elif file.endswith('.FPT'):
            print('Skipping FPT file.')
            continue

        elif file.startswith('Another_file_prefix') and file.endswith('.DB~'):
            print('All files converted to CSV.')
            break

        else:
            print('\nFile not found or error.')
            print(f'Last file read in was {file}.')

在忽略先前转换的文件时,我可以修改哪些内容以指定最后一个读入并从此处开始的文件?目录中文件的名称含糊不清,只是一个字母和一个随着您向下浏览目录而增加的数字(例如,“ A0001.DBF”,“ A0002.DBF”,“ A0003.DBF”等)

我最初的解决方案是将最后一个文件分配给变量,然后修改我的“ if”语句。

start_file = last_file_read_in

for file in os.listdir(directory):
    if file == start_file:
       #run conversion code
       #continue iterating through each file starting from this point

0 个答案:

没有答案