У меня есть код python-3.6.5, который копирует файлы с использованием shutil.copy2()
.Я получаю ошибку прав доступа, когда использую ее, и мне трудно отследить источник моей ошибки.Ниже приведен соответствующий фрагмент кода:
>>> genome='HCC2A1.bin.22.fa'
>>> output_folder='/gpfs0/home/group/user/Scratch/somedir/output_directory3/dereplicated_genomes/'
>>> loc='/gpfs0/home/group/user/Scratch/somedir/HCC2A1.bin.22.fa'
>>> shutil.copy2(loc, "{0}{1}".format(output_folder,genome))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/python/3.6.5/lib/python3.6/shutil.py", line 258, in copy2
copystat(src, dst, follow_symlinks=follow_symlinks)
File "/opt/python/3.6.5/lib/python3.6/shutil.py", line 225, in copystat
_copyxattr(src, dst, follow_symlinks=follow)
File "/opt/python/3.6.5/lib/python3.6/shutil.py", line 165, in _copyxattr
os.setxattr(dst, name, value, follow_symlinks=follow_symlinks)
PermissionError: [Errno 13] Permission denied: '/gpfs0/home/group/user/Scratch/somedir/output_directory3/dereplicated_genomes/HCC2A1.bin.22.fa'
Я получаю эту забавную ошибку разрешений.Я озадачен, потому что нет никаких забавных разрешений на файл.Например,
~$ ls -l /gpfs0/home/group/user/Scratch/somedir/HCC2A1.bin.22.fa
-rwxrwxrwx. 1 user group 4850851 Aug 29 13:21 /gpfs0/home/group/user/Scratch/somedir/HCC2A1.bin.22.fa
Кроме того, файл, который shutil.copy2
пытается создать (и предположительно терпит неудачу), на самом деле создан с соответствующими разрешениями.Например,
~$ ls -l /gpfs0/home/group/user/Scratch/somedir/output_directory3/dereplicated_genomes/
total 4768
-rwxrwxrwx. 1 user group 4850851 Aug 29 13:21 HCC2A1.bin.22.fa
Я пытался установить точки останова в модуле системного уровня (для дальнейшего изучения), но безрезультатно.Например (продолжая код интерпретатора Python сверху ...)
>>> import pdb; pdb.set_trace()
--Return--
<function save_history at 0x2aeccefafb70>
> <stdin>(1)<module>()->None
(Pdb) b /gpfs0/export/opt/python/3.6.5/lib/python3.6/shutil.py : 255
Breakpoint 2 at /gpfs0/export/opt/python/3.6.5/lib/python3.6/shutil.py:255
(Pdb) b
Num Type Disp Enb Where
1 breakpoint keep yes at /gpfs0/export/opt/python/3.6.5/lib/python3.6/shutil.py:165
2 breakpoint keep yes at /gpfs0/export/opt/python/3.6.5/lib/python3.6/shutil.py:255
(Pdb) shutil.copy2(loc, "{0}{1}".format(output_folder,genome))
*** PermissionError: [Errno 13] Permission denied: '/gpfs0/home/group/user/Scratch/somedir/output_directory3/dereplicated_genomes/HCC2A1.bin.22.fa'
ВОПРОС
Почему shutil.copy2()
терпит неудачу?Это определенно создает файл, и я дал абсолютные пути, избегая символических ссылок.На HCC2A1.bin.22.fa
не установлено никаких странных разрешений.
Почему я не могу установить точку останова на системном уровне shutil.py
?