0

使用 IronPython 2.6(我是新手),我正在尝试编写一个程序来打开文件,将其保存在一系列位置,然后打开/操作/重新保存这些文件。它将由上层程序循环运行,整个过程旨在捕获/保留损坏的保存,以便我的公司可以弄清楚为什么偶尔会发生这种损坏故障。

我目前已经制定了脚本的打开/保存到位置部分,现在我需要构建一个函数来打开,检查是否损坏,并且(如果损坏)将文件移动到子文件夹中(应用了迭代重命名,对于副本)或(如果可以),修改文件并保存副本,在副本上重复该过程,无重复。

我告诉这一切是为了解决根本问题。在我的情况下,将文件(损坏的)移动到子文件夹中的最pythonic、一致和 windows/unix 友好的方法是什么,同时还根据所述子文件夹中存在的文件的预先存在副本的数量重命名它?

换句话说:
在构建为的文件夹结构中:
C:\Folder\test.txt
C:\Folder\Subfolder
C:\Folder\Subfolder\test.txt
C:\Folder\Subfolder\test01.txt
C:\Folder\Subfolder\test02.txt
C:\Folder\Subfolder\test03.txt

如何移动test.txt
C:\Folder\Subfolder
C:\Folder\Subfolder\test.txt
C:\Folder\Subfolder\test01.txt
C:\Folder\Subfolder\test02.txt
C:\Folder\Subfolder\test03.txt
C:\Folder\Subfolder\test04.txt
以自动化方式,以便我可以在一夜之间循环我的程序并让它堆叠我需要保存的损坏的文本文件?注意:它们实际上不是文本文件,只是示例。

4

1 回答 1

1

假设您要对文件使用递增后缀数字的约定:

import os.path
import shutil

def store_copy( file_to_copy, destination):
    filename, extension = os.path.splitext( os.path.basename(file_to_copy)
    existing_files = [i for in in os.listdir(destination) if i.startswith(filename)]
    new_file_name = "%s%02d%s" % (filename, len(existing_files), extension)
    shutil.copy2(file_to_copy, os.path.join(destination, new_file_name)

如果目标中的子目录或文件的名称与源文件重叠,即,如果您的文件名为“example.txt”且目标包含“example_A.txt”和“example.txt”,则会出现失败情况,并且'example01.txt' 如果有可能,您必须将 现有文件 =行中的测试更改为更复杂的内容

于 2013-08-27T16:05:57.267 回答