Ошибка отказа в разрешении при чтении файлов в папке zip с использованием python in Django - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь прочитать файлы dicom в папке zip, но когда я запускаю этот код, он выдает мне эту ошибку:

[Errno 13] Отказано в доступе: 'PATIENT_DICOM /'

file = patient.PATIENT_DICOM

with zipfile.ZipFile(file,'r') as zip:
    zip.extractall()
    ls= zip.infolist()
    slices = [pydicom.read_file(s.filename) for s in ls]

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Я думаю, вы должны попробовать это:

data = pydicom.dcmread(filename)
0 голосов
/ 12 февраля 2020

По сути, вы должны прочитать извлеченные файлы DICOM:

zip_path = patient.PATIENT_DICOM
with zipfile.ZipFile(zip_path, 'r') as zip:
    path = tempfile.mkdtemp()
    zip.extractall(path)
    slices = []
    for root, _, filenames in os.walk(path):
        for filename in filenames:
            filepath = os.path.join(root, filename)
            slices.append(pydicom.dcmread(filepath))
    shutil.rmtree(path)

Обратите внимание, что при этом сначала все файлы извлекаются в временный каталог, что, вероятно, быстрее, чем доступ к ним один за другим. Это предполагает, что все файлы в zip принадлежат одному и тому же объему или серии. Если вы хотите продолжить работу с кусочками, сначала нужно правильно их отсортировать, например, по InstanceNumber.

...