私はすでにthis threadを読みましたが、私のコードに実装すると数回の反復でしか動作しません。Pythonは新しいディレクトリにファイルをコピーし、ファイル名がすでに存在する場合は名前を変更します
pythonを使用して、ディレクトリを移動して(ディレクトリを移動することができます)、主にpdfファイル(一意のIDと一致)を別のディレクトリ(ベースディレクトリ)から一致するフォルダ(対応する一意のID) 。私はshutil.copy
を使い始めましたが、重複があると既存のファイルを上書きします。
対応するフォルダを検索して、ファイルがすでに存在するかどうかを確認し、複数のファイルが存在する場合は繰り返して名前を付けることができます。
- コピーファイル1234.pdfは、ベースディレクトリにフォルダに1234
- 別のPDFを1234.pdfとしてコピーされた場合1234.pdfは
- 、それを1234_1.pdf名前に存在している場合、それは1234_2だろう.pdf。ここで
私のコードです:
import arcpy
import os
import re
import sys
import traceback
import collections
import shutil
movdir = r"C:\Scans"
basedir = r"C:\Links"
try:
#Walk through all files in the directory that contains the files to copy
for root, dirs, files in os.walk(movdir):
for filename in files:
#find the name location and name of files
path = os.path.join(root, filename)
print path
#file name and extension
ARN, extension = os.path.splitext(filename)
print ARN
#Location of the corresponding folder in the new directory
link = os.path.join(basedir,ARN)
# if the folder already exists in new directory
if os.path.exists(link):
#this is the file location in the new directory
file = os.path.join(basedir, ARN, ARN)
linkfn = os.path.join(basedir, ARN, filename)
if os.path.exists(linkfn):
i = 0
#if this file already exists in the folder
print "Path exists already"
while os.path.exists(file + "_" + str(i) + extension):
i+=1
print "Already 2x exists..."
print "Renaming"
shutil.copy(path, file + "_" + str(i) + extension)
else:
shutil.copy(path, link)
print ARN + " " + "Copied"
else:
print ARN + " " + "Not Found"
いいえ、構造が異なっています。たとえば、movdirはプロパティ情報のスキャンであり、ストリート名で整理されており、pdfには一意のIDで名前が付けられています。 C:\ Scans \ Main St \ 1234.pdf basedirは、特定のプロパティのすべての情報を一意のIDで並べ替える新しい構造体です。 C:\ Links \ 1234であり、将来は追加のサブフォルダがあるかもしれませんが、今はC:\ Links \ 1234 \ 1234.pdfにコピーしたいと考えています。 – GISKid
check ['filename_fix_existing(filename)']( https://github.com/steveeJ/python-wget/blob/master/wget.py#L72) –