os.rename随机删除文件

时间:2018-09-27 12:59:31

标签: python-3.x

我大约需要重命名150.000个图像文件。这些存储在Unix系统上,我列出文件,使用regex查找要重命名的位并进行重命名。查看输出,发现文件已被删除。如果仅用打印语句替换os.rename,则所有文件都会存在并重命名。我尝试从Jupiter笔记本远程运行代码,并使用可执行脚本在本地运行代码,其行为相同:随机删除某些文件。有人有解释吗? 这是代码

import os as os
import re as re

pattern = re.compile('(.*_.*Z0)(\d)(C0\d.tif)')
for file in os.listdir('.'):
    if file.startswith("08") and not file.endswith("C04.tif"):
        res = re.search(pattern, file)
        zPlane = str(int(res.group(2))-2)
        os.rename(file, res.group(1)+zPlane+res.group(3))

和一些文件名

08-20-16_01-00-43_G13_T0001F001L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F001L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F001L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F001L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F001L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F001L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F001L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F001L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F001L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F001L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F001L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F001L01A03Z03C02.tif
08-20-16_01-00-43_G13_T0001F001L01A03Z06C02.tif
08-20-16_01-00-43_G13_T0001F001L01A03Z07C02.tif
08-20-16_01-00-43_G13_T0001F001L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F001L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F001L01A04Z04C01.tif
08-20-16_01-00-43_G13_T0001F001L01A04Z05C01.tif
08-20-16_01-00-43_G13_T0001F001L01A04Z06C01.tif
08-20-16_01-00-43_G13_T0001F001L01A04Z07C01.tif
08-20-16_01-00-43_G13_T0001F002L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F002L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F002L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F002L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F002L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F002L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F002L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F002L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F002L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F002L01A02Z04C03.tif
08-20-16_01-00-43_G13_T0001F002L01A02Z05C03.tif
08-20-16_01-00-43_G13_T0001F002L01A02Z06C03.tif
08-20-16_01-00-43_G13_T0001F002L01A02Z07C03.tif
08-20-16_01-00-43_G13_T0001F002L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F002L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F002L01A03Z03C02.tif
08-20-16_01-00-43_G13_T0001F002L01A03Z04C02.tif
08-20-16_01-00-43_G13_T0001F002L01A03Z05C02.tif
08-20-16_01-00-43_G13_T0001F002L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F002L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F003L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F003L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F003L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F003L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F003L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F003L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F003L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F003L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F003L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F003L01A02Z03C03.tif
08-20-16_01-00-43_G13_T0001F003L01A02Z06C03.tif
08-20-16_01-00-43_G13_T0001F003L01A02Z07C03.tif
08-20-16_01-00-43_G13_T0001F003L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F003L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F003L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F003L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F003L01A04Z03C01.tif
08-20-16_01-00-43_G13_T0001F003L01A04Z04C01.tif
08-20-16_01-00-43_G13_T0001F003L01A04Z05C01.tif
08-20-16_01-00-43_G13_T0001F004L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F004L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F004L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F004L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F004L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F004L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F004L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F004L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F004L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F004L01A02Z03C03.tif
08-20-16_01-00-43_G13_T0001F004L01A02Z06C03.tif
08-20-16_01-00-43_G13_T0001F004L01A02Z07C03.tif
08-20-16_01-00-43_G13_T0001F004L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F004L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F004L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F004L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F004L01A04Z03C01.tif
08-20-16_01-00-43_G13_T0001F004L01A04Z04C01.tif
08-20-16_01-00-43_G13_T0001F004L01A04Z05C01.tif
08-20-16_01-00-43_G13_T0001F005L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F005L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F005L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F005L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F005L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F005L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F005L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F005L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F005L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F005L01A02Z04C03.tif
08-20-16_01-00-43_G13_T0001F005L01A02Z05C03.tif
08-20-16_01-00-43_G13_T0001F005L01A02Z06C03.tif
08-20-16_01-00-43_G13_T0001F005L01A02Z07C03.tif
08-20-16_01-00-43_G13_T0001F005L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F005L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F005L01A03Z03C02.tif
08-20-16_01-00-43_G13_T0001F005L01A03Z04C02.tif
08-20-16_01-00-43_G13_T0001F005L01A03Z05C02.tif
08-20-16_01-00-43_G13_T0001F005L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F005L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F006L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F006L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F006L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F006L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F006L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F006L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F006L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F006L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F006L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F006L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F006L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F006L01A03Z03C02.tif
08-20-16_01-00-43_G13_T0001F006L01A03Z06C02.tif
08-20-16_01-00-43_G13_T0001F006L01A03Z07C02.tif
08-20-16_01-00-43_G13_T0001F006L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F006L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F006L01A04Z04C01.tif
08-20-16_01-00-43_G13_T0001F006L01A04Z05C01.tif
08-20-16_01-00-43_G13_T0001F006L01A04Z06C01.tif
08-20-16_01-00-43_G13_T0001F006L01A04Z07C01.tif
08-20-16_01-00-43_G13_T0001F007L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F007L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F007L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F007L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F007L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F007L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F007L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F007L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F007L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F007L01A02Z03C03.tif
08-20-16_01-00-43_G13_T0001F007L01A02Z04C03.tif
08-20-16_01-00-43_G13_T0001F007L01A02Z05C03.tif
08-20-16_01-00-43_G13_T0001F007L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F007L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F007L01A03Z04C02.tif
08-20-16_01-00-43_G13_T0001F007L01A03Z05C02.tif
08-20-16_01-00-43_G13_T0001F007L01A03Z06C02.tif
08-20-16_01-00-43_G13_T0001F007L01A03Z07C02.tif
08-20-16_01-00-43_G13_T0001F007L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F007L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F007L01A04Z03C01.tif
08-20-16_01-00-43_G13_T0001F007L01A04Z06C01.tif
08-20-16_01-00-43_G13_T0001F007L01A04Z07C01.tif
08-20-16_01-00-43_G13_T0001F008L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F008L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F008L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F008L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F008L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F008L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F008L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F008L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F008L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F008L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F008L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F008L01A03Z03C02.tif
08-20-16_01-00-43_G13_T0001F008L01A03Z06C02.tif
08-20-16_01-00-43_G13_T0001F008L01A03Z07C02.tif
08-20-16_01-00-43_G13_T0001F008L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F008L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F008L01A04Z04C01.tif
08-20-16_01-00-43_G13_T0001F008L01A04Z05C01.tif
08-20-16_01-00-43_G13_T0001F008L01A04Z06C01.tif
08-20-16_01-00-43_G13_T0001F008L01A04Z07C01.tif
08-20-16_01-00-43_G13_T0001F009L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F009L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F009L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F009L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F009L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F009L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F009L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F009L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F009L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F009L01A02Z03C03.tif
08-20-16_01-00-43_G13_T0001F009L01A02Z04C03.tif
08-20-16_01-00-43_G13_T0001F009L01A02Z05C03.tif
08-20-16_01-00-43_G13_T0001F009L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F009L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F009L01A03Z04C02.tif
08-20-16_01-00-43_G13_T0001F009L01A03Z05C02.tif
08-20-16_01-00-43_G13_T0001F009L01A03Z06C02.tif
08-20-16_01-00-43_G13_T0001F009L01A03Z07C02.tif
08-20-16_01-00-43_G13_T0001F009L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F009L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F009L01A04Z03C01.tif
08-20-16_01-00-43_G13_T0001F009L01A04Z06C01.tif
08-20-16_01-00-43_G13_T0001F009L01A04Z07C01.tif
08-20-16_01-00-43_G13_T0001F010L01A01Z01C04.tif
08-20-16_01-00-43_G13_T0001F010L01A01Z02C04.tif
08-20-16_01-00-43_G13_T0001F010L01A01Z03C04.tif
08-20-16_01-00-43_G13_T0001F010L01A01Z04C04.tif
08-20-16_01-00-43_G13_T0001F010L01A01Z05C04.tif
08-20-16_01-00-43_G13_T0001F010L01A01Z06C04.tif
08-20-16_01-00-43_G13_T0001F010L01A01Z07C04.tif
08-20-16_01-00-43_G13_T0001F010L01A02Z01C03.tif
08-20-16_01-00-43_G13_T0001F010L01A02Z02C03.tif
08-20-16_01-00-43_G13_T0001F010L01A03Z01C02.tif
08-20-16_01-00-43_G13_T0001F010L01A03Z02C02.tif
08-20-16_01-00-43_G13_T0001F010L01A03Z03C02.tif
08-20-16_01-00-43_G13_T0001F010L01A03Z06C02.tif
08-20-16_01-00-43_G13_T0001F010L01A03Z07C02.tif
08-20-16_01-00-43_G13_T0001F010L01A04Z01C01.tif
08-20-16_01-00-43_G13_T0001F010L01A04Z02C01.tif
08-20-16_01-00-43_G13_T0001F010L01A04Z04C01.tif
08-20-16_01-00-43_G13_T0001F010L01A04Z05C01.tif
08-20-16_01-00-43_G13_T0001F010L01A04Z06C01.tif
08-20-16_01-00-43_G13_T0001F010L01A04Z07C01.tif

1 个答案:

答案 0 :(得分:0)

将“一些文件名”存储在名为f.txt的文件中,使用:

with open("f.txt","r") as r:
    files = set((x.strip() for x in r.readlines()))

import re as re
results = {}
pattern = re.compile(r'(.*_.*Z0)(\d)(C0\d.tif)')
for file in files:
    if file.startswith("08") and not file.endswith("C04.tif"):
        res = re.search(pattern, file)
        zPlane = str(int(res.group(2))-2)

        # overwriting existing file
        newname = res.group(1)+zPlane+res.group(3)
        if newname in files:
            print(newname," overwrites existing file")

        # check if two files get renamed into the same one
        keyy = results.setdefault(newname,[])
        keyy.append( file )

# this outputs nothing
for k in results:
    if len(results[k])>1:
        print(k,results[k])

您正在通过重命名覆盖现有文件。我从一个文本文件中获取了它们。

将文件A重命名为B(已经存在),然后在处理文件B时将其重命名为C。这样看起来好像文件已被删除。

输出:

08-20-16_01-00-43_G13_T0001F009L01A02Z01C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F004L01A02Z01C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F009L01A04Z01C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F008L01A04Z05C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F009L01A03Z05C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F009L01A03Z04C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F002L01A03Z02C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F007L01A03Z02C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F002L01A03Z03C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F004L01A04Z02C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F002L01A02Z02C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F001L01A04Z02C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F003L01A04Z01C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F001L01A04Z04C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F006L01A03Z01C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F010L01A04Z04C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F001L01A04Z05C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F005L01A03Z03C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F006L01A04Z04C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F010L01A04Z05C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F005L01A02Z05C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F007L01A02Z02C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F002L01A02Z04C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F002L01A03Z01C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F002L01A02Z05C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F008L01A03Z01C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F007L01A04Z01C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F001L01A03Z01C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F007L01A03Z05C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F007L01A03Z04C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F009L01A02Z03C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F003L01A04Z02C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F004L01A04Z01C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F010L01A03Z01C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F003L01A02Z01C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F005L01A03Z01C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F008L01A04Z04C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F003L01A04Z03C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F007L01A02Z01C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F009L01A02Z02C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F005L01A02Z02C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F005L01A02Z04C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F005L01A03Z02C02.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F006L01A04Z05C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F010L01A04Z02C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F008L01A04Z02C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F006L01A04Z02C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F004L01A04Z03C01.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F007L01A02Z03C03.tif  overwrites existing file
08-20-16_01-00-43_G13_T0001F009L01A03Z02C02.tif  overwrites existing file

解决方案:

import os.path

if (os.path.exists(newname)):
    # choose another name ....