所以我从头开始学习一个我还没有真正在其他任何地方复制过的程序。我将准确描述我想要它做什么:
我有一个字符串列表,如下所示:
12482-2958
02274+2482
23381-3857
..........
我想获取每个字符串并搜索几十个文件(全部名为wds000.dat,wds005.dat,wds010.dat等)以进行匹配。如果其中一个找到匹配项,我想将该字符串写入一个新文件,所以最后我有一个匹配的字符串列表。
如果我需要更清楚一些事情,请告诉我。任何从这里开始的帮助将非常感激。谢谢你们和gals!
答案 0 :(得分:3)
这样的事情应该有效
import os
#### your array ####
myarray = {"12482-2958", "02274+2482", "23381-3857"}
path = os.path.expanduser("path/to/myfile")
newpath = os.path.expanduser("path/to/myResultsFile")
filename = 'matches.data'
newf = open(os.path.join(newpath, filename), "w+")
###### Loops through every element in the above array ####
for element in myarray:
elementstring=''.join(element)
#### opens the path where all of your .dat files are ####
files = os.listdir(path)
for f in files:
if f.strip().endswith(".dat"):
openfile = open(os.path.join(path, f), 'rb')
#### loops through every line in the file comparing the strings ####
for line in openfile:
if elementstring in line:
newf.write(line)
openfile.close()
newf.close()
答案 1 :(得分:1)
定义一个获取路径和字符串并检查匹配的函数 你可以使用:open(),find(),close() 然后只需在for循环中创建所有路径,为每个路径检查所有带有该函数的字符串,并在需要时打印到文件
没有解释太多......需要更多解释?
答案 2 :(得分:0)
不是那么pythonic ......并且可能有一些东西要理顺,但几乎要遵循逻辑:
from glob import glob
strings = ['12482-2958',...] # your strings
output = []
for file in glob('ws*.dat'):
with open(file, 'rb+') as f:
for line in f.readlines():
for subs in strings:
if subs in line:
output.append(line)
print(output)