我正在尝试编写一个程序,以对特定数据类型的文件夹进行爬网,在该文件夹中创建一个新文件夹,并在其中创建该数据类型的每个文件的副本。
我已经通过在已经存在的另一个文件夹中复制文件的方式来使其工作,但是我想一次完成所有操作。到目前为止,这是代码:
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())
到目前为止,没有错误消息,只是没有获得任何新的文件夹或文件。
答案 0 :(得分:0)
欢迎使用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 = folder + '\\imgCopy'
替换了newFolder = os.path.join(folder, folder+'Copy')
,因为os.path.join()
会自动为您解决所有问题(文件夹是否以斜杠结尾?是用户吗?使用文件系统,其中目录之间用正斜杠或反斜杠分隔?)。如果文件夹未命名为folder+'Copy'
,我会使用img
。我还删除了无关的变量files
,因为它只使用了一次。我在开始时添加了os.path.isdir()
,以防止不存在的文件夹。最后,我允许使用可选参数ext
自定义扩展名。
在函数之外,我删除了多余的print
语句:input
可以默认显示提示。