2017-02-01 94 views
0

我正在嘗試從文件夾中的子目錄移動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 
+0

你只想要移動文件,這比賽從一個文本文件(我假設你的意思你的''LIST.txt''?)(以何種方式文件名內容???) –

回答

0

第一,請在此處創建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): 
相關問題