在Django中使用python读取zip文件夹中的文件时出现权限被拒绝错误
我试图读取zip文件夹中的dicom文件,但当我运行此代码时,会出现以下错误: [Errno 13]权限被拒绝:“PATIENT_DICOM/”在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
基本上,您必须读取提取的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)