Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.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
Python 编译代码时,进程会自动删除原始文件_Python_Python 3.x_Csv_Export To Excel_Dicom - Fatal编程技术网

Python 编译代码时,进程会自动删除原始文件

Python 编译代码时,进程会自动删除原始文件,python,python-3.x,csv,export-to-excel,dicom,Python,Python 3.x,Csv,Export To Excel,Dicom,我用python编写了一段代码,将dicom(.dcm)数据转换为csv文件。但是,如果我在数据库目录上多次运行代码,数据会自动丢失/删除。我尝试在“回收站”中搜索,但找不到已删除的数据。我不知道数据出错的过程 我的代码有什么问题吗?非常感谢您的任何建议 这是我的密码: import xlsxwriter import os.path import sys import dicom import xlrd import csv root = input("Enter Directory Na

我用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")])

您有类似于以下场景的情况:

在第一次迭代之后,您以以下文件结束:
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'))

然后您将看到,哪些文件被重命名。

如果您只运行一次代码会怎么样?还有什么东西吗?。请注意,您正在重命名文件,因此它们会“消失”…如果我运行一次代码,它会从原始名称重命名文件,但不会丢失任何内容,如果我第二次运行代码,我会开始丢失文件。“我开始丢失文件”是什么意思?您丢失了多少,还剩下多少,以及它们的名称是如何更改的?如果一个初始db大约是60mb,在第二次迭代后它会变成40mb左右,但我不认为有丢失文件的模式。文件名未更改,但文件丢失,例如,如果我有MR0001-10,则可能会丢失2、5、6等文件。您是否在实践中再现了此场景?。我运行的代码和文件不消失。如果在两次运行之间创建了一个新文件(某些_文件),则会得到一个FileExistError,因为如果MR0001.dcm已经存在,则无法创建它。在这种情况下,我使用了os.replace而不是os.rename。在Linux中,代码使用os.rename运行,但在Windows中显示pycharm错误。我在Windows中运行时使用了os.replace,如果运行超过3/4次,文件就会消失。@joaquin,我刚才重复了它(),我意识到目录中文件的顺序不必按字母顺序排列。但是,这些文件仍然被覆盖,没有任何问题。@Bartłomiej这是Linux上的吗?我在windows中看到了
os.replace
,在第二次迭代中,除了一个文件之外,其他文件都会被删除
os.rename
donotThat's right,Linux,Python 3.5.2。顺便说一下,我以前不知道Windows和Linux之间的区别。看见