我有一個串列,其中每個條目由 5 個單獨的隨機陣列成:
串列輸出:
...
['00349']
['02300']
['00020']
...
現在我有兩個嵌套的 for 回圈。外回圈遍歷這個串列。內部回圈遍歷位于單獨目錄中的大量檔案。目的是我想檢查串列中的每個條目是否包含在檔案名之一中。如果是這樣,我想將這些檔案復制到單獨的目標目錄中并中斷內部回圈,因為找到了該專案并繼續串列中的下一個條目。
檔案示例的結構:
name_01043.json
我嘗試了幾件事(見下文),但以下版本總是回傳 false。
到目前為止,這是我的代碼:
from re import search
import fnmatch
list = []
# some code to fill the list
SOURCE_PATH = "dir/source"
TARGET_PATH = "dir/target"
for item in list:
for fname in os.listdir(SOURCE_PATH):
# check if fname contains item name:
strg1 = str(fname)
strg2 = str(item)
if fnmatch.fnmatch(fname, strg2):
# if fnmatch.fnmatch(fname, '*' strg2 '*'):
sourcepath = os.path.join(SOURCE_PATH, fname)
shutil.copy(sourcepath, TARGET_PATH)
break
uj5u.com熱心網友回復:
這是一個可以充分利用 glob 模塊的示例:
import glob
import os
import shutil
SOURCE_PATH = 'dir/source'
TARGET_PATH = 'dir/target'
# just use some hard-coded values for the sake of example
mylist = ['00349', '02300', '00020']
for e in mylist:
for file in glob.glob(os.path.join(SOURCE_PATH, f'*{e}*')):
shutil.copy(file, TARGET_PATH)
uj5u.com熱心網友回復:
你可以使用這樣的東西:
for path, subdirs, files in os.walk(SOURCE_PATH):
for file in files:
if strg2 in str(file):
# Do something
這將回傳該位置的每個路徑、子目錄和檔案。您可以通過這種方式逐個檔案檢查檔案,只需檢查是否str(file)包含您需要的字串
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373415.html
上一篇:如何使用正則運算式或任何javascript方法從字串中獲取url
下一篇:使用遞回函式的C字串反轉
