如何修复此特定"NotADirectoryError: [Errno 20] Not a directory"错误?



我正在尝试将具有相同名称的文件从不同的文件夹移动到保持文件夹结构的新文件夹,但每次都得到相同的错误

Errno20

  • 在一个目录中我有三个文件夹
  • 每个文件夹都有自己的logs.txt文件
ls esxi*
esxi1:
logs.txt

esxi2:
logs.txt

esxi3:
logs.txt
  • 我可以找到它们python3:
>>> for i in glob.glob('**/*.txt', recursive=True):
...   print(i)
...
esxi3/logs.txt
esxi2/logs.txt
esxi1/logs.txt
case1/logs.txt

…现在当尝试移动它们时,得到相同的错误:

>>> for i in glob.glob('**/*.txt', recursive=True):
...   shutil.copytree(i, 'case1',  dirs_exist_ok=True)
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "/usr/lib/python3.8/shutil.py", line 555, in copytree
with os.scandir(src) as itr:
NotADirectoryError: [Errno 20] Not a directory: 'esxi3/logs.txt'
>>>

使用了。copy2() &copytree()并且总是得到而不是目录错误,

你能帮我移动文件和它们的目录吗?

注意:在这些目录中有更多的文件,我只想复制那些特定的logs.txt文件…

谢谢!

font =宋体;您需要复制目录,而不是其中的文件,像这样:

for n,i in enumerate (glob.glob('./esx*', recursive=True)):
shutil.copytree(i, "/tmp/zied/"+str(n))

,如果您想保留目录名,则:

import os 
for n,i in enumerate (glob.glob('./esx*', recursive=True)):
shutil.copytree(i, "/tmp/zied/"+os.path.basename(i))

相关内容

最新更新