我正在做一个基本的文件管理器来练习。我在尝试将文件从一个目录复制到另一个已经存在的目录时遇到了问题
def singulateDataInDir(SRCdir, passBackFiles=bool, passBackDirs=bool):
for root, dirs, files in os.walk(SRCdir, topdown=True):
for name in files:
filesInSRCdir = os.path.join(root, name)
if passBackFiles is True:
return filesInSRCdir
for name in dirs:
dirsInSRCdir = os.path.join(root, name)
if passBackDirs is True:
return dirsInSRCdir
def copyFilesFromSRCtoDEST(SRCdir, DESTdir):
for files in singulateDataInDir(SRCdir, True, False):
shutil.copy2(files, DESTdir)
我尝试对SRCdir中的项目进行排序,并根据参数返回文件、目录或两者。 我得到一个错误,说我的目的地是一个目录(我想?也许“/”意味着我输入的代码不正确。)
Traceback (most recent call last):
File "main.py", line 45, in <module>
main(True)
File "main.py", line 38, in main
code.copyFilesFromSRCtoDEST(srcOpt, destOpt)
File "/Users/jcrd/Documents/csProjects/pythonProjects/screenshotCollecting/code.py", line 34, in copyFilesFromSRCtoDEST
shutil.copy2(files, DESTdir)
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/shutil.py", line 432, in copy2
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/shutil.py", line 261, in copyfile
with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
IsADirectoryError: [Errno 21] Is a directory: '/'
任何帮助都将是惊人的,谢谢你看我的问题
问题是
singulateDataInDir
不生成文件名,也不是生成器。它返回带有return filesInSRCdir
的单个路径,依此类推迭代返回的名称中的字符,以正斜杠“/”开头。因此错误
Is a directory: '/'
。修复方法是yield
而不是return
。您还需要修改函数的默认参数bool
是一个类型对象,但这并不意味着输入必须是bool相关问题 更多 >
编程相关推荐