Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python检查数据库时在目录中的文件之间循环出现问题_Python_Mysql_File - Fatal编程技术网

使用Python检查数据库时在目录中的文件之间循环出现问题

使用Python检查数据库时在目录中的文件之间循环出现问题,python,mysql,file,Python,Mysql,File,我试图处理给定目录中的一堆csv文件。每次我运行脚本时,它都会遍历目录中的每个文件(如果我添加了新文件),然后再次检查数据库,查看文件是否已处理,如果已处理,则从哪一行开始处理 问题是,无论状态如何,脚本似乎都会跳过我在数据库表中列出的任何文件。我肯定我遗漏了一些明显的东西,但我不能完全拼凑出我的测试出了什么问题 以下是表格的结构: file_processed_id | file_type | file_name | file_line | file_lines_processed | fil

我试图处理给定目录中的一堆csv文件。每次我运行脚本时,它都会遍历目录中的每个文件(如果我添加了新文件),然后再次检查数据库,查看文件是否已处理,如果已处理,则从哪一行开始处理

问题是,无论状态如何,脚本似乎都会跳过我在数据库表中列出的任何文件。我肯定我遗漏了一些明显的东西,但我不能完全拼凑出我的测试出了什么问题

以下是表格的结构:

file_processed_id | file_type | file_name | file_line | file_lines_processed | file_lines_skipped | file_status
以下是相关代码:

for filename in os.listdir(path):
    status = check_process_status(filename,conn)
    if status != None:
        if status[7] == 'completed':
            pass
        else:
            start_line = status[3]
            file_to_processed = filename
            break
    else:
        start_line = 0
        file_to_be_processed = filename
下面是检查数据库的函数:

def check_process_status(f,conn):

    # retrieve process status of file

    cursor = conn.cursor()

    cursor.execute("""SELECT *
                FROM files_processed
                WHERE file_type = 'faca'
                AND file_name = %s
                """,(f,))

    row = cursor.fetchone()
    if row == None:
        return None # if no entry, returns null
    else:
        return row # returns row information
我已经测试了db连接和所有内容,如果文件确实存在于表中,它会很好地返回行信息。我不明白的是,为什么每次运行脚本时都会跳转到下一个文件,而不管“file_status”字段设置为什么


有什么想法吗?

根据你的评论,在
文件待处理=文件名之后的
else
子句中不应该有
break
语句吗

还要注意,在上面几行,这个变量被错误地命名为
file\u to\u processed


还要注意,
status[7]
可能会引发异常,因为表中似乎只有7个字段。我猜应该是
status[6]

为什么循环中会出现
中断
?我可能遗漏了一些非常基本的东西,但是这个循环与循环csv文件的循环是分开的,所以一旦我找到一个未经处理的文件,我需要设置变量并中断循环。当它到达
中断
时,它将不会处理另一个文件。它似乎会跳过导致
中断的文件之后的每个文件。这就是你的意图吗?如果是这样,你的问题令人困惑。