我有一個包含數十萬個文件的目錄。使用python以部分名稱查找文件
他們都遵循以下格式:
datetime_fileid_metadata_collect.txt
一個具體的例子是這樣的:
201405052359559_0002230255_35702088_collect88.txt
我嘗試寫翻出並複製單個文件時,所有我提供它的腳本是文件ID的列表。
比如我有一個文本文件fileids.txt是constains這
fileids.txt
0002230255
0001627237
0001023000
這是示例腳本到目前爲止,我已經寫了。 file1結果不斷返回[]
import os
import re, glob, shutil
base_dir = 'c:/stuff/tub_0_data/'
destination = 'c:/files_goes_here'
os.chdir(base_dir)
text_file = open('c:/stuff/fileids.txt', 'r')
file_ids = text_file.readlines()
#file_ids = [stripped for stripped in (line.strip() for line in text_file.readlines()) if stripped]
for ids in file_ids:
id1 = ids.rstrip()
print 'file id = ',str(id1)
file1 = glob.glob('*' + str(id1) + '*')
print str(file1)
if file1 != []:
shutil.copy(base_dir + file1, destination)
我知道我還沒有完全理解glob或正則表達式。如果我想根據文件名的特定字符串查找文件,那麼我會放在那裏?
編輯:
glob.glob('*' + stuff '*')
供職的文件名中找到的東西。不刪除行空間是問題。
將此行更改爲:'file_ids = text.file.readlines()'到'file_ids = text_file.readlines()'並再次運行。 '_'上的錯字可能是個問題。 – Manhattan 2014-09-22 22:40:35
已修復,它實際上是一個更大的腳本的一部分,並且在原始代碼中不存在拼寫錯誤。我只是重寫了我的問題的核心代碼。 glob.glob是我相信我的問題所在。 – AlienAnarchist 2014-09-22 22:44:07