在正异常FileNotFoundError之后创建文件

时间:2016-05-08 15:15:50

标签: python file parsing csv

我编写了一个脚本,用于解析网页并将感兴趣的数据保存在CSV文件中。在我打开数据并在第二个脚本中使用它之前,我检查是否存在包含数据的文件,如果不存在,我首先运行解析器脚本。第二个脚本的奇怪行为是,它能够检测到没有文件,然后创建文件,但是当它第一次被读取时它是空的(else语句的一部分)。我试图通过使用time.sleep()方法提供一些延迟,但它不起作用。浏览器清楚地显示该文件不为空,但在第一次运行时,脚本将该文件识别为空。在后续运行中,脚本可以清楚地看到文件并能够正确识别它的内容。

也许你对这种行为有一些解释。

public boolean checkFibb(ArrayList<Integer> array1) {
    int i;
    int fibb;

    if (array1.size() < 3) {
        System.out.println("Your array is too short!");
    } else {
        for (i = 0; i <= array1.size() - 2; i++) {
            fibb = array1.get(i + 2) - (array1.get(i + 1) + array1.get(i));

            if (fibb != 0) {
                System.out.println("Elements are not part of the Fibonacci sequence.");
                break;
            } else {
                System.out.println("Elements are part of the Fibonacci sequence.");
            }
        }
    }

    return true;
}

2 个答案:

答案 0 :(得分:1)

你正在进行一些递归。

另一种方法 - 假设我理解正确 - 是这样的:

import os

def open_file():
    # TARGET_DIR and URL are global variables.
    all_lines = []

    # If the file is not there, make it.
    if not os.path.isfile(TARGET_DIR):
        procesed_data = parse_site(URL)
        save_parsed(procesed_data)
        compare_parsed()
        # Here I am assuming the file has been created.

    current_file = codecs.open(TARGET_DIR, 'r', 'utf-8')
    data = csv.reader(current_file, delimiter=';')
    for row in data:
        all_lines.append(row)
    current_file.close()
    return all_lines

答案 1 :(得分:0)

您应该返回内部open_file来电的结果,或者只是打开您的除外地块中的文件:

def open_file():
    # TARGET_DIR and URL are hopefully constants
    try:
        current_file = codecs.open(TARGET_DIR, 'r', 'utf-8')
    except FileNotFoundError:
        procesed_data = parse_site(URL)
        save_parsed(procesed_data)
        compare_parsed()
        current_file = codecs.open(TARGET_DIR, 'r', 'utf-8')

    data = csv.reader(current_file, delimiter=';')
    all_lines = list(data)
    current_file.close()
    return all_lines