我正在尝试编写一个程序,它可以抓取特定数据类型的文件夹,在该文件夹中创建一个新文件夹,并在该文件夹中创建该数据类型的每个文件的副本。
我已经通过在已经存在的不同文件夹中制作文件的副本来让它工作,但我想一气呵成。这是目前为止的代码:
import glob, os, shutil
def imageSearch(folder):
newFolder = folder + '\\imgCopy'
if not os.path.isdir(newFolder):
os.makedirs(newFolder)
files = glob.iglob(os.path.join(folder, '*.jpg'))
for file in files:
if os.path.isfile(file):
shutil.copy2(file, newFolder)
print('Which folder are you crawling?')
imageSearch(input())到目前为止没有错误消息,只是没有得到任何新的文件夹或文件。
发布于 2019-05-24 03:38:21
欢迎使用StackOverflow。由于您是新来的,这是一个简单的问题,这里有一个完整的解决方案。
import glob, os, shutil
def imageSearch(folder, ext='jpg'):
if os.path.isdir(folder):
newFolder = os.path.join(folder, folder+'Copy')
print(newFolder)
if not os.path.isdir(newFolder):
os.makedirs(newFolder)
for file in glob.iglob(os.path.join(folder, '*.'+ext)):
if os.path.isfile(file):
shutil.copy2(file, newFolder)
else:
print("Folder does not exist.")
folder = input('Which folder are you crawling?\n')
ext = input('What file extension would you like to search for?\n')
imageSearch(folder, ext)我现在将解释我做了什么。首先(修复代码的事情),我用newFolder = os.path.join(folder, folder+'Copy')替换了newFolder = folder + '\\imgCopy',因为os.path.join()会自动为你修复任何问题(文件夹是否以斜杠结尾?用户使用的文件系统中的目录是用正斜杠还是反斜杠分隔的?)。如果文件夹没有命名为img,我使用了folder+'Copy'。我还删除了外部变量files,因为它只用过一次。我在开始时添加了一个os.path.isdir(),以防止不存在的文件夹。最后,我允许使用可选参数ext定制扩展。
在函数外部,我删除了无关的print语句:默认情况下,input可以打印提示。
https://stackoverflow.com/questions/56281783
复制相似问题