我是python的新手。我正在遍历一组使用variable goods的操作,我想在文件中使用特定文本词price查找文件列表以grep所有文件并读取它。我有以下代码,但它给[Errno 2]没有此类文件或目录。如果还有其他方法,请有人指导我,在此先感谢
data=os.listdir('./data/pack/')
for goods in data:
filepath = ('./file/'+ goods + '/cost/')
grep=subprocess.Popen(['grep','-lir','price', filepath],stdout=subprocess.PIPE)
found=grep.communicate()[0]
print(found)
我什至尝试了其他类似下面的方法
try:
grep1=subprocess.Popen('[./file/'+ goods + '/cost/']), stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
grep=subprocess.Popen(['grep','-lir','price'],stdin=grep1.stdout,stdout=subprocess.PIPE)
grep1.stdout.close()
grep.communicate()
except
但是以上两种方法都没有给我结果
谢谢! 找到结果!
cmd = 'grep -lir "price"' './file/'+ goods + '/cost/' -i | grep '.txt'
result = subprocess.check_output(cmd, shell=True)
以递归方式遍历文件夹和子文件夹,并获取要在其中搜索所需扩展名的所有文件。
import os
from glob import glob
dir_path = "path_of_your_directory"
file_extension = "file_extensions_in_which_you_want_to_search"
files = [y for x in os.walk(dir_path) for y in glob(os.path.join(x[0], '*.' + file_extension))]
现在遍历文件,打开每个文件,然后检查要搜索的文本。您可以使用find()或regular expressions进行搜索。
for file_path in files:
if open(file_path, 'r').read().find('the_text_you_want_to_search') != -1:
print("found")