我编写了一个脚本,用于解析网页并将感兴趣的数据保存在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;
}
答案 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