gpt4 book ai didi

Python 在继续之前等待操作完成

转载 作者:太空狗 更新时间:2023-10-30 01:38:17 25 4
gpt4 key购买 nike

我正在将数据写入 CSV 文件,完成后,我将文件复制到另一个目录。

这是一个循环,所以当第二次迭代开始时,它会从复制的文件中读取数据。

问题是在第二次迭代开始时文件仍在复制,这会导致明显的问题。

在第二次迭代开始之前,我如何等待循环中的整个函数完成?它应该能够继续进行任意数量的迭代。

for rule in substring_rules:
substring(rule)

函数:

        def substring(rule, remove_rows=[]):        
writer = csv.writer(open("%s%s" % (DZINE_DIR, f), "wb"))
from_column = rule.from_column
to_column = rule.to_column
reader = csv.reader(open("%s%s" % (OUTPUT_DIR, f)))
headers = reader.next()
index = 0
from_column_index = None
for head in headers:
if head == from_column:
from_column_index = index
index += 1

if to_column not in headers:
headers.append(to_column)

writer.writerow(headers)

row_index = 0
for row in reader:
if rule.get_rule_type_display() == "substring":
try:
string = rule.string.split(",")
new_value = string[0] + row[from_column_index] + string[1]
if from_column == to_column:
row[from_column_index] = new_value
else:
row.append(new_value)
except Exception, e:
print e

if row_index not in remove_rows:
writer.writerow(row)
row_index += 1
shutil.copyfile("%s%s" % (DZINE_DIR,f), "%s%s" % (OUTPUT_DIR, f))

最佳答案

问题是您在复制文件之前没有将文件刷新到磁盘供阅读器使用。(当文件对象被垃圾回收时,这是自动完成的)

代替

writer = csv.writer(open("%s%s" % (DZINE_DIR, f), "wb"))
...
shutil.copyfile("%s%s" % (DZINE_DIR,f), "%s%s" % (OUTPUT_DIR, f))

你应该写

wf = open("%s%s" % (DZINE_DIR, f), "wb")
writer = csv.writer(wf)
...
wf.close()
shutil.copyfile("%s%s" % (DZINE_DIR,f), "%s%s" % (OUTPUT_DIR, f))

关于Python 在继续之前等待操作完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21137213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com