从目录中的文本文件复制文件
Copy files from text file in directory
我正在尝试从文件夹的子目录中移动 pdf 文件。此代码有效并移动找到的所有 pdf。我只想使用以下代码移动与文本文件中的数字匹配的 pdf 文件:
with open('LIST.txt', 'r') as f:
myNames = [line.strip() for line in f]
print myNames
完整代码:
import os
import shutil
with open('LIST.txt', 'r') as f:
myNames = [line.strip() for line in f]
print myNames
dir_src = r"C:\Users\user\Desktop\oldfolder"
dir_dst = r"C:\Users\user\Desktop\newfolder"
for dirpath, dirs, files in os.walk(dir_src):
for file in files:
if file.endswith(".pdf"):
shutil.copy( os.path.join(dirpath, file), dir_dst )
文本文件内容示例:
111111
111112
111113
111114
首先,在这里创建一个 set
而不是列表,这样查找会更快:
myNames = {line.strip() for line in f}
然后对于过滤器,我假设 myNames
必须与文件的基本名称(减去扩展名)相匹配。所以而不是:
if file.endswith(".pdf"):
shutil.copy( os.path.join(dirpath, file), dir_dst )
检查扩展名以及减去扩展名的基本名称是否属于您之前创建的集合:
bn,ext = os.path.splitext(file)
if ext == ".pdf" and bn in myNames:
shutil.copy( os.path.join(dirpath, file), dir_dst )
要将文件名与 myNames
中的子字符串匹配,您不能依赖 in
方法。你可以这样做:
if ext == ".pdf" and any(s in file for s in myNames):
我正在尝试从文件夹的子目录中移动 pdf 文件。此代码有效并移动找到的所有 pdf。我只想使用以下代码移动与文本文件中的数字匹配的 pdf 文件:
with open('LIST.txt', 'r') as f:
myNames = [line.strip() for line in f]
print myNames
完整代码:
import os
import shutil
with open('LIST.txt', 'r') as f:
myNames = [line.strip() for line in f]
print myNames
dir_src = r"C:\Users\user\Desktop\oldfolder"
dir_dst = r"C:\Users\user\Desktop\newfolder"
for dirpath, dirs, files in os.walk(dir_src):
for file in files:
if file.endswith(".pdf"):
shutil.copy( os.path.join(dirpath, file), dir_dst )
文本文件内容示例:
111111
111112
111113
111114
首先,在这里创建一个 set
而不是列表,这样查找会更快:
myNames = {line.strip() for line in f}
然后对于过滤器,我假设 myNames
必须与文件的基本名称(减去扩展名)相匹配。所以而不是:
if file.endswith(".pdf"):
shutil.copy( os.path.join(dirpath, file), dir_dst )
检查扩展名以及减去扩展名的基本名称是否属于您之前创建的集合:
bn,ext = os.path.splitext(file)
if ext == ".pdf" and bn in myNames:
shutil.copy( os.path.join(dirpath, file), dir_dst )
要将文件名与 myNames
中的子字符串匹配,您不能依赖 in
方法。你可以这样做:
if ext == ".pdf" and any(s in file for s in myNames):