我正在努力完善dummy blockchain
代码,并希望使文件无法read and write csv
,如果它已经被使用。我该怎么办?
我已经把start()
、join()
、acquire()
、release()
等放在我能想到的所有地方,但我根本没有工作。曾经收到一条消息" Permission denied
",但是,当我打开文件时,它仍然给了我文件中的信息。(所有其他功能都正常工作。
def readBlockchain(blockchainFilePath, mode = 'internal'):
get_lock.acquire()
print("readBlockchain is called")
importedBlockchain = []
try:
with open(blockchainFilePath, 'r', newline='') as file:
blockReader = csv.reader(file)
for line in blockReader:
block = Block(line[0], line[1], line[2], line[3], line[4], line[5],line[6])
importedBlockchain.append(block)
print("Pulling blockchain from csv...")
get_lock.release()
return importedBlockchain
except:
if mode == 'internal':
blockchain = generateGenesisBlock()
importedBlockchain.append(blockchain)
writeBlockchain(importedBlockchain)
get_lock.release()
return importedBlockchain
else:
get_lock.release()
return None
我希望如果我打开了csv文件,它不会被读取,并且在我关闭文件后被读取。
我期待你的回答!谢谢。
看看互斥锁,它使您能够获取和锁定资源,并在作业完成后解锁它。
链接 : 互斥锁