5
私はCSVファイルにデータを書き込んでいます。それが終わったら、ファイルを別のディレクトリにコピーします。続行する前に操作が完了するまでPythonが待っています
これはすべてループ内にあるため、2回目の繰り返しが開始されると、コピーされたファイルからデータが読み込まれます。
問題は、2番目の繰り返しが開始されている間にファイルがまだコピーされていることです。これは明らかな問題を引き起こします。
2回目の反復が始まる前に、ループ内の関数全体が完了するのをどのように待つのですか?任意の反復回数で処理を続けることができます。
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))
を書くべきですか? – yuvi
あなたのお話はわかりません。ループはforのルールです。: – Harry
まあ、pythonはスクリプト言語であり、コードを同期スレッドとして実行します。これは、行単位で実行され、実行されます。別の操作の後に何らかの操作が必要な場合は、その操作を下に置くだけです。現在のところ、すべてを同時に実行しようとしています – yuvi