gpt4 book ai didi

python - 递归python文件复制程序的问题

转载 作者:行者123 更新时间:2023-11-28 18:50:31 25 4
gpt4 key购买 nike

我最近开始学习 python,但遇到了一些麻烦。有问题的功能试图从给定的目录开始,在我的例子中,'/home/jesse/ostest',搜索所有子目录,并将所有'.txt'文件复制到'/home/jesse/COPIES '.当我运行该程序时,一些文件被复制,但它陷入了无限循环。我希望它在更改为“/home/jesse”(search() 的第 10 行)时中断。也许我不太了解递归,但不胜感激。

这里是一个测试目录,里面有子目录用来测试程序。

[jesse@jesse ostest]$ tree
.
├── readme.txt
├── README_WxPython.txt
├── rect.txt
├── RELEASE_NOTES.txt
├── scrap.txt
├── sndarray.txt
├── sprite.txt
├── surface.txt
├── surfarray.txt
├── test_oo.txt
├── tests.txt
├── this
│   ├── gme_notes.txt
│   ├── gme_readme.txt
│   ├── h1.txt
│   ├── h2.txt
│   ├── how_to_build.txt
│   ├── howto_release_pygame.txt
│   ├── image.txt
│   ├── IMPORTANT_MOVED.txt
│   ├── index.txt
│   ├── install.txt
│   ├── is
│   │   ├── a
│   │   │   ├── color.txt
│   │   │   ├── common.txt
│   │   │   ├── cursors.txt
│   │   │   ├── dec.txt
│   │   │   ├── defs.txt
│   │   │   └── display.txt
│   │   ├── event.txt
│   │   ├── examples.txt
│   │   ├── filepaths.txt
│   │   ├── font.txt
│   │   ├── freetype.txt
│   │   ├── gfxdraw.txt
│   │   ├── gme_design.txt
│   │   └── path
│   │   ├── api.txt
│   │   ├── auth.txt
│   │   ├── camera.txt
│   │   ├── cdrom.txt
│   │   ├── cert_override.txt
│   │   ├── changes_for_symbian.txt
│   │   └── CHANGES.txt
│   └── joystick.txt
├── time.txt
├── TODO.txt
└── transform.txt

4 directories, 45 files

代码如下:

def copyAll():
print('This function attempts to search through /home/jesse/ostest and copy all .txt files.')
input('Press <enter> to begin..')
new = '/home/jesse/COPIES'
os.mkdir(new)
done = []
search('/home/jesse/ostest', new, done)
print(os.getcwd())
print(os.listdir())

def search(arg, new, done):
os.chdir(arg)
print(os.getcwd())
for var in os.listdir():
if os.path.isdir(var) and var not in done:
search(var, new, done)
elif var[-4:] == '.txt' and var not in done:
shutil.copy2(var, '/home/jesse/COPIES')
print('COPIED', var, '\t\tto', new)
elif os.getcwd() == '/home/jesse':
break
else:
done += os.getcwd()
os.chdir('..')
search(os.getcwd(), new, done)

最佳答案

关于python - 递归python文件复制程序的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13649611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com