Как использовать блокировку потока при чтении и записи файла CSV в Python? - PullRequest
0 голосов
/ 29 мая 2019

Я работаю над уточнением кода 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, и будет прочитан после того, как я закрыл файл.

Я с нетерпением жду ваших ответов! Спасибо.

1 Ответ

0 голосов
/ 29 мая 2019

Посмотрите на мьютексы, которые позволяют вам получить и заблокировать ресурс, а также разблокировать его после завершения работы.
Ссылка: мьютекс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...