2016-08-30 26 views
1

私のフラッシュドライブ(文字D :)のファイルを私のハードドライブ上のフォルダにコピーするが、というPermissionErrorを取得するプログラムをPythonで作成しようとしています: [Errno 13]許可が拒否されました: 'D:'次のようにPython - Errno 13ファイルをコピーしようとしたときに許可が拒否されました

私のコードの問題の一部です:コピーファイル()関数はエラーを返す場合は、実行されるまで

# Copy files to folder in current directory 
def copy(): 
    source = getsource() 

    if source != "failure": 

     copyfile(source, createfolder()) 
     wait("Successfully backup up drive" 
      "\nPress 'Enter' to exit the program") 

    else: 
     wait("No USB drive was detected" 
      "\nPress 'Enter' to exit") 

# Create a folder in current directory w/ date and time 
def createfolder(): 
    name = strftime("%a, %b %d, %Y, %H.%M.%S", gmtime()) 
    dir_path = os.path.dirname(os.path.realpath(__file__)) 
    new_folder = dir_path + "\\" + name 
    os.makedirs(new_folder) 

return new_folder 

すべてが正常に動作するようです。 getsource()を代わりにファイルの宛先に置き換えようとしましたが、代わりにnew_folderディレクトリ以外の同じアクセス権エラーが返されました。

私は他のいくつかの投稿を読んだことがありますが、それらのどれも私の場合には関係していないようです。私は両方の場所にも完全な管理者権限を持っています。 ご協力いただければ幸いです!

+0

'D:'ディレクトリをファイルのように開こうとしている可能性があるので、これが起こっている可能性があります。 – Harrison

+0

@ハリソン私はそれの中のファイルをコピーできるようにディレクトリを開くことができる方法はありますか? –

+0

はい回答を投稿します。 – Harrison

答えて

0

上記の私のコメントで述べたように、ディレクトリであるファイルD:を開こうとしているようで、ファイルではないため動作しません。ディレクトリです。

os.listdir()を使用して、ご希望のディレクトリ内のすべてのファイルを一覧表示してから、shutil.copy()を使用してファイルをコピーしてください。ここで

はそれらのそれぞれのためのドキュメントです:

os.listdir()

shutil.copy()(あなたがこの関数に各ファイルを渡します)

(あなたがこの機能への完全なファイルパスを渡すされます)

ディレクトリ内のすべてのファイルをall_the_files = os.listdir(/path/to/file)などの変数に格納してから、all_the_filesをループします(for each_file in all_the_files:など)。shutil.copy()を使用してください。

+0

それで、それは完璧に動作しましたが、私はまだ私がコピーしようとしているフォルダに対して同じエラーが発生しています...どんな提案ですか? –

+0

ドキュメントを見て、特定のディレクトリにコピーするための正しいshutilメソッドが 'copy()'であることがわかりました。 'copyfile()'はファイルの内容を別のファイルにコピーします。答えにもう一度感謝します! –

+0

@QuintonShips Glad私は助けることができた:) – Harrison

関連する問題