2017-10-09 2 views
0

Mit dem Skript zu kopieren versuchen:Zugriff verweigert, wenn Dateien

file = os.path.join(subfolder_name, list_of_files[i]) 
    for dest_folder_finetune, dest_folder_relab in zip(finetune_datasets, relab_datasets): 
     copy(file, dest_folder_finetune) 
     copy(file, dest_folder_relab) 

alle 20 Iterationen, ich bin eine Erlaubnis verweigert Problem. Der Stapel, sieht ungefähr so ​​aus:

Traceback (most recent call last): 
    File "/home/revan/boosting_classifier_with_games/dataset_creator.py", line 72, in <module> 
main() 
    File "/home/revan/boosting_classifier_with_games/dataset_creator.py", line 24, in main 
create_test_and_relab(list_of_subfolders) 
    File "/home/revan/boosting_classifier_with_games/dataset_creator.py", line 66, in create_test_and_relab 
copy(file, dest_folder_finetune) 
    File "/home/revan/anaconda2/envs/pytorch/lib/python2.7/shutil.py", line 119, in copy 
copyfile(src, dst) 
    File "/home/revan/anaconda2/envs/pytorch/lib/python2.7/shutil.py", line 83, in copyfile 
with open(dst, 'wb') as fdst: 
IOError: [Errno 13] Permission denied: '/sun_btbivuchmkkzetpo.jpg' 

Die ‚lustig‘ ist, dass ich auf jeden Fall haben alle Berechtigungen für diese Datei. Außerdem habe ich versucht, es manuell zu kopieren, und ich kann es ohne Probleme tun. Wenn ich den Prozess randomize, wird die gleiche Datei kopiert, aber dann kann eine andere Datei (nach 20 Iterationen) nicht kopiert werden.

PS: Ändern der Kopie zu copy2, gibt das exakt gleiche Problem.

Hat jemand in der Vergangenheit etwas ähnliches erlebt? Könnte es sich um ein Python- oder Linux-Problem handeln?

+0

Sind Sie sicher, dass Sie eine Datei 'sun_btbivuchmkkzetpo.jpg' im ** Stammverzeichnis des Dateisystems ** genannt haben? – jacg

+0

Ja. Tatsächlich erhalte ich die Namen der Dateien, indem ich ein Skript ausführe, das über die Unterordner iteriert. Dann kopiere ich Dateien mit den Namen aus dieser Liste, aber alle 20 Kopien gibt es dieses Problem. Thing is, 20 ist nichts besonderes hier (es gibt 100 Dateien für Unterordner), und ich habe manuell überprüft, dass die Datei existiert, zusätzlich zu Lese-/Schreibberechtigungen und in der Lage, sie manuell zu kopieren. – TheRevanchist

+0

Sie wissen es zu schätzen, dass das Speichern von zufälligen Daten im ** Wurzelverzeichnis Ihres Dateisystems **, ähm ..., eine ziemlich zwielichtige und unangemessene Sache ist? – jacg

Antwort

0

Einer Ihrer Datasets hat einen ungültigen Ordnernamen, der das Ziel auf den Stamm des Dateisystems setzt.

Um es einfach arbeiten, können Sie überspringen, wenn es um die Wurzel zu kopieren versucht:

import os 
file = os.path.join(subfolder_name, list_of_files[i]) 
for dest_folder_finetune, dest_folder_relab in zip(finetune_datasets, relab_datasets): 
     if os.path.abspath(dest_folder_finetune) != "/": 
      copy(file, dest_folder_finetune) 
     else: 
      print("Warning, path {} for dest_folder_finetune writes to the root of the filesystem".format(dest_folder_finetune)) 
     if os.path.abspath(dest_folder_relab) != "/": 
      copy(file, dest_folder_relab) 
     else: 
      print("Warning, path {} for dest_folder_relab writes to the root of the filesystem".format(dest_folder_relab)) 

Wenn dies jedoch mehr als ein Live-einmal-Skript ist, schlage ich vor, Schrubben und die Datenmenge im Voraus zu überprüfen, anstatt .

-3

Versuch mit „sudo python filename.py“

+0

Sie sollten Ihren Code in 'Symbole einschließen. – AreTor

+0

Brute-forcing es mit 'sudo' anstatt das Problem zu verstehen und zu beheben, scheint nicht sehr guter Rat. – jacg

Verwandte Themen