【发布时间】:2020-01-21 19:53:05
【问题描述】:
我正在尝试构建一个脚本来将压缩文件从一个目录复制到另一个目录。
目前我有以下代码,可以使用所需的字符串_NLS跨解压缩文件进行复制,但不能复制压缩文件。
import shutil
import os
source = r"C:\\directoryA\\"
dest = r"C:\\directoryB\\"
for file in os.listdir(source):
if '_NLS' in file.lower():
if not os.path.exists(dest):
os.makedirs(dest)
shutil.copyfile(source + file, dest + file)
这会移动解压后的文件,而不是压缩后的文件。
感谢您的帮助,
卢克
【问题讨论】:
-
1.如果您使用原始字符串,请不要将反斜杠加倍。 3. 做
os.path.join,不要手动“求和”路径。 3. 不能复制压缩文件是什么意思? Zip 文件是文件。如果 zip 文件的名称中有_NLS,它将起作用。如果您指的是内容,那么显然它不会那样工作,因为 zip 文件是一个文件,而不是一个目录。 -
“跨压缩文件”到底是什么意思?从压缩文件到文件夹?从文件夹到压缩文件?在两个压缩文件之间?所有三个(和现有的)都根据源/目标是什么做“正确的事情”?您的代码中也有一些奇怪的地方,例如您正在寻找小写字符串中的
NLS(大写),但它永远不会起作用。并且 copyfile 调用在循环之外,因此只会对迭代的最后一项进行操作。 -
除此之外,您可能想看看
zipfile.Path(类似于压缩文件中的pathlib.Path)和shutil.copyfileobj,它适用于文件-like对象,因此将与 zipfile 的伪文件对象兼容(由ZipFile.open返回)。 -
大家好,很抱歉造成混乱。已修改,抱歉浪费您的时间。
标签: python python-3.x