Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django中使用python读取zip文件夹中的文件时出现权限被拒绝错误_Python_Django_Pydicom - Fatal编程技术网

在Django中使用python读取zip文件夹中的文件时出现权限被拒绝错误

在Django中使用python读取zip文件夹中的文件时出现权限被拒绝错误,python,django,pydicom,Python,Django,Pydicom,我试图读取zip文件夹中的dicom文件,但当我运行此代码时,会出现以下错误: [Errno 13]权限被拒绝:“PATIENT_DICOM/” 基本上,您必须读取提取的DICOM文件: zip_path = patient.PATIENT_DICOM with zipfile.ZipFile(zip_path, 'r') as zip: path = tempfile.mkdtemp() zip.extractall(path) slices = [] for

我试图读取zip文件夹中的dicom文件,但当我运行此代码时,会出现以下错误:

[Errno 13]权限被拒绝:“PATIENT_DICOM/”


基本上,您必须读取提取的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)

请注意,这首先将所有文件提取到temp dir中,这可能比逐个访问它们要快。这假设zip中的所有文件都属于同一卷或系列。如果要进一步处理切片,必须首先对其进行正确排序,例如按
InstanceNumber

我认为您必须尝试以下方法:

data=pydicom.dcmread(文件名)

我不认为可以用这种方式直接处理zipfile—您可能必须首先提取zip。我使用了zip.extractall(),但错误是相同的。您得到异常的原因是什么?您可以添加stacktrace吗?我添加了,但出现了另一个错误[WinError 3]系统找不到指定的路径:“C:\\Users\\Dell\u 5G\\AppData\\Local\\Temp\\tmpotwe933h\\PATIENT\u DICOM”在哪一行发生这种情况?在
zip.extract
中?好的,我通过首先提取所有文件来更改代码-参见上文。
dcmread
read\u file
的别名,虽然使用它是正确的,但它不会更改语义。
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)