2016-03-12 2 views
0

Je copie des fichiers de construction de notre logiciel à partir d'un répertoire d'un emplacement réseau vers mon ordinateur local. J'ai d'abord lu le fichier build.txt pour lire la dernière version de construction. Je peux ensuite copier les derniers fichiers de construction sur ma machine locale, c'est-à-dire déployer le dernier fichier de construction sur ma machine locale.Python en utilisant shutil.copyFile pour copier des fichiers d'un répertoire de l'emplacement réseau vers le bureau local montre l'autorisation den4ied

J'ai correctement défini le chemin du répertoire src après avoir lu le fichier texte de construction. J'ai imprimé le chemin vers la console et copié le chemin d'accès aux fenêtres pour vérifier si le chemin est correct. Le chemin existe.

J'utilise shutil.copyFile

Je reçois la permission refusée quand je lance mon code. La trace d'erreur complète est:

Traceback (most recent call last): 
    File "C:\Webdriver\ClearCore 501 Regression Test\ClearCore 501 - Regression Test\Base\BaseTestCase.py", line 34, in setUpClass 
    shutil.copyfile(src2, dest_file) 
    File "C:\Python27\lib\shutil.py", line 82, in copyfile 
    with open(src, 'rb') as fsrc: 
IOError: [Errno 13] Permission denied: '\\\\STORAGE-1\\Builds\\clearcore4\\5_1_1\\engine\\ClearCore4_b5_1_1_v5_1_1_5306\\deploy\\engine' 

Mon extrait de code Python pour lire le fichier build.txt et copiez le fichier src à destination est:

from ConfigParser import SafeConfigParser 
import shutil 

class BaseTestCase(unittest.TestCase): 
@classmethod 
def setUpClass(cls): 
    # copy build file 
    build_text_file_directory = r"\\STORAGE-1\Builds\clearcore4\autotest" 
    dest_file = r"C:\Riaz\clearcore_5_1_1_copy_test_using_shutil_tool\engine" 
    build_config = SafeConfigParser() 
    fn = os.path.join(build_text_file_directory, "5_1_1_build.txt") 
    build_config.read(fn) 
    label = build_config.get("build", "label") 
    src = r"\\STORAGE-1\Builds\clearcore4\5_1_1\engine\%s" % label 
    src2 = os.path.join(src, r"deploy\engine") 
    shutil.copyfile(src2, dest_file) 

Comment puis-je résoudre l'autorisation refusée et obtenir les fichiers à copier vers la destination? Merci, Riaz

Répondre

0

J'ai réussi à résoudre ce problème maintenant, le problème était qu'il essayait de copier un répertoire. shutilcopyfile copie les fichiers, pas un répertoire. J'ai modifié mon code pour parcourir les répertoires et copier les fichiers des sous-répertoires. Si un sous-répertoire n'existe pas, il va le créer et y copier les fichiers.

Mon code de travail est:

build_text_file_directory = r"\\STORAGE-1\Builds\clearcore4\autotest" 
    dest = r"C:\Riaz\ClearCore501 - copy latest build copy test\engine" 
    build_config = SafeConfigParser() 
    fn = os.path.join(build_text_file_directory, "5_1_1_build.txt") 
    build_config.read(fn) 
    label = build_config.get("build", "label") 
    src = r"\\STORAGE-1\Builds\clearcore4\5_1_1\engine\%s\deploy\engine" % label 
    for src_dir, dirs, files in os.walk(src): 
     if "gazdb" in dirs: # Do not copy "gazdb" directory. 
      dirs.remove("gazdb") 
     dest_dir = os.path.join(dest, src_dir[len(src) + 1:]) 
     if not os.path.exists(dest_dir): 
      os.makedirs(dest_dir) 
     for filename in files: 
      src_file = os.path.join(src_dir, filename) 
      dest_file = os.path.join(dest_dir, filename) 
      # print("%s -> %s" % (src_file, dest_file)) 
      shutil.copyfile(src_file, dest_file)