我在python中编写了一个代码,用于将dicom(.dcm)数据转换为csv文件。但是,如果我在数据库目录中多次运行代码,则数据会自动丢失/删除。我尝试在“回收站”中搜索但找不到已删除的数据。我不知道数据出错的过程。
我的代码有什么问题吗?任何建议都非常感谢。
这是我的代码:
import xlsxwriter
import os.path
import sys
import dicom
import xlrd
import csv
root = input("Enter Directory Name: ")
#path = os.path.join(root, "targetdirectory")
i=1
for path, subdirs, files in os.walk(root):
for name in files:
os.rename(os.path.join(path, name), os.path.join(path,'MR000'+ str(i)+'.dcm'))
i=i+1
dcm_files = []
for path, dirs, files in os.walk(root):
for names in files:
if names.endswith(".dcm"):
dcm_files.append(os.path.join(path, names))
print (dcm_files)
with open('junk/test_0.csv', 'w', newline='') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',',
quotechar='|',
quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(["Folder Name","File Name", "PatientName",
"PatientID", "PatientBirthDate","SliceThickness","Rows"])
for dcm_file in dcm_files:
ds = dicom.read_file(dcm_file)
fileName = dcm_file.split("/")
spamwriter.writerow([fileName[1],fileName[2],
ds.get("PatientName", "None"),
ds.get("PatientID", "None"),
ds.get("PatientBirthDate", "None"),
ds.get("SliceThickness", "None"),
ds.get("Rows", "None")])
答案 0 :(得分:1)
您有以下情况:
第一次迭代后,您以文件结束:MR0001.dcm
,MR0002.dcm
,MR0003.dcm
...在第二次迭代中,有以下更改:
os.rename('some_file', 'MR0001.dcm')
os.rename('MR0001.dcm', 'MR0002.dcm')
os.rename('MR0002.dcm', 'MR0003.dcm')
os.rename('MR0003.dcm', 'MR0004.dcm')
...
所以最后只有一个文件' MR0004.dcm'。
在重命名后面添加以下行:
print( os.path.join(path, name), '-->', os.path.join(path,'MR000'+ str(i)+'.dcm'))
然后你会看到,文件被重命名的是什么。