2

すべてのファイルを 2 つのディレクトリから別のディレクトリにコピーしたいのですが、ファイルが同じ名前の場合、コピー先のディレクトリに一度 (両方ではなく 1 つのディレクトリで) コピーされます。

コードは次のとおりです。

def cp_files_tmp(src, dest):#copy dir's files into a  dir
    src_files = os.listdir(src)
    for file_name in src_files:
        full_file_name = os.path.join(src, file_name)
        if (os.path.isfile(full_file_name)):
            shutil.copy(full_file_name, dest)

dest = 'C:/temp/'
src_A= 'C:/sil/in/'     
src_B= 'C:/olw/in/'

cp_files_tmp(src_A, dest) # cp files
cp_files_tmp(src_B, dest) # cp files
4

1 に答える 1

5

しかし、期待される動作とは何ですか? 2 つのファイルが同じ名前の場合、それらをコピーすると、最初のファイルが 2 番目のファイルで上書きされるだけで、結果が異なることはありません。たとえば、ファイル X が存在する場合、2 番目の X を X.tmp などとしてコピーするなど、何らかの名前の統一を提案する必要があります。

def cp_files_tmp(src, dest):
    src_files = os.listdir(src)
    for file_name in src_files:
        full_file_name = os.path.join(src, file_name)
        full_destination=os.path.join(dest,file_name)
        if (os.path.isfile(full_file_name)):
            while os.path.exists(full_destination):
                full_destination += ".duplicate"
            shutil.copy(full_file_name, full_destination)

dest = 'C:/temp/'
src_A= 'C:/sil/in/'     
src_B= 'C:/olw/in/'

cp_files_tmp(src_A, dest) # cp files
cp_files_tmp(src_B, dest) # cp files

これにより、ファイルが C:/sil/in および C:/olw/in から C:/temp にコピーされ、重複の場合は結果の名前が FILE_NAME.duplicate に変更されます。

于 2013-08-09T06:17:35.053 に答える