web-dev-qa-db-ja.com

Python。 IOError:[Errno 13]許可が拒否されました:ファイルをコピーしているとき

2つのフォルダーがあります:In、Out-ディスクDのシステムフォルダーではありません:-Windows 7. Out contains "myfile.txt" Pythonで次のコマンドを実行します。

>>> shutil.copyfile( r"d:\Out\myfile.txt", r"D:\In" )

Traceback (most recent call last):
  File "<pyshell#39>", line 1, in <module>
    shutil.copyfile( r"d:\Out\myfile.txt", r"D:\In" )
  File "C:\Python27\lib\shutil.py", line 82, in copyfile
    with open(dst, 'wb') as fdst:
IOError: [Errno 13] Permission denied: 'D:\\In'

どうしたの?

24
G-71

docs を読んでください:

shutil.copyfile(src, dst)

srcという名前のファイルの内容(メタデータなし)をdstという名前のファイルにコピーします。 dstは、完全なターゲットファイル名でなければなりません;ターゲットディレクトリパスを受け入れるコピーについては、copy()を参照してください。

58
Tim Pietzcker

shutil.copyfileの代わりにshutil.copyを使用します

例:

shutil.copy(PathOf_SourceFileName.extension,TargetFolderPath)
12
sohom

shutil.copyfileの代わりにshutil.copy2を使用します

import shutil 
shutil.copy2('/src/dir/file.ext','/dst/dir/newname.ext') # file copy to another file
shutil.copy2('/src/file.ext', '/dst/dir') # file copy to diff directory
1

この問題を解決しました。宛先の完全なターゲットファイル名である必要があります

宛先=パスディレクトリ+ファイル名。*

Shutilでこのコードfirコピーwavファイルを使用します。

    # open file with QFileDialog

    browse_file = QFileDialog.getOpenFileName(None, 'Open file', 'c:', "wav files (*.wav)")

    # get file name 

    base = os.path.basename(browse_file[0])
    os.path.splitext(base)
    print(os.path.splitext(base)[1])

    # make destination path with file name

    destination= "test/" + os.path.splitext(base)[0] + os.path.splitext(base)[1]
    shutil.copyfile(browse_file[0], destination)
1
hassanzadeh.sd

使用する

> from shutil import copyfile
> 
> copyfile(src, dst)

srcおよびdstの使用:

srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
0
msnmkh