python - חיפוש טקסט בקבצים

עץ השדה

משתמש פעיל
הנדסת תוכנה
אשמח לעזרה - יש לי תיקיה שמכילה תתי תיקיות רבות ובתוך כל אחת עשרות קבצים
אני מעוניינת לחפש סטרינג מסויים בתוך הקבצים, לא כל העשרות אלא 1-2 מסויימים מתוך כל תת תיקיה.
צריכה כפלט את שמות הקבצים והנתיב שבהם נמצאה התאמה לסטרינג, וכן כמה פעמים הופיע בכל קובץ.
ב python
אשמח להכוונה
תודה רבה
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
קשקשתי לך משהו. נראה לי שיהיה טוב כנקודת התחלה
Python:
import os


def search_text_in_file(file, text):
    with open(file, 'r', encoding="ISO-8859-1") as f:
        for line in f:
            if text in line:
                return True
    return False


def recursive_scan_dir(path):
    for root, dirs, files in os.walk(path):
        for file in files:
            yield os.path.join(root, file)


my_path = os.path.dirname('...')

for file in recursive_scan_dir(my_path):
    if search_text_in_file(file, 'my super puper text'):
        print('Found in: ', file)
 

עץ השדה

משתמש פעיל
הנדסת תוכנה
קשקשתי לך משהו. נראה לי שיהיה טוב כנקודת התחלה
תודה ענקית, עזרת לי מאד להתחיל!

עכשיו יש לי עוד שאלה, אני מנסה לקרוא קובץ אקסל ולהכניס את הערכים לתוך מערך.
ניסיתי להשתמש ב pandas.read_excel' הוא מדפיס לי באמת את העמודות והשורות אבל לא נראה שמתייחס אליהם כאל מערך.
אשמח לעזרה
תודה רבה
 

s976

משתמש סופר מקצוען
הנדסת תוכנה
D I G I T A L
ל-pandas יש סוג מבנה נתונים משל עצמו. וזה נקרא DataFrame
מאוד מאוד נוח לעבוד אתו. הרבה יותר יותר מסתם מערך. לכן תשקלי לא להמיר למערך בכלל. (מה גם שהמיומנות הזו של עבודה על pandas זה כלי מעולה וממש מומלץ לכל מפתח להכיר אותו).
בכלל מקרה, אם תרצי להמיר דווקא למערך (דו-מיימדי, נכון?) אז תגגלי איך להמיר pandas DataFrame
נראה לי שזה בתוך "values"
בנוסף אפשר לעשות איטרציות על כל השורות.
 

עץ השדה

משתמש פעיל
הנדסת תוכנה
ל-pandas יש סוג מבנה נתונים משל עצמו. וזה נקרא DataFrame
מאוד מאוד נוח לעבוד אתו. הרבה יותר יותר מסתם מערך. לכן תשקלי לא להמיר למערך בכלל. (מה גם שהמיומנות הזו של עבודה על pandas זה כלי מעולה וממש מומלץ לכל מפתח להכיר אותו).
בכלל מקרה, אם תרצי להמיר דווקא למערך (דו-מיימדי, נכון?) אז תגגלי איך להמיר pandas DataFrame
נראה לי שזה בתוך "values"
בנוסף אפשר לעשות איטרציות על כל השורות.
תודה רבה, וסליחה על התגובה המאוחרת, הייתי בחופש :)

יש לי שאלה נוספת, ממש אשמח לעזרה
יש לי כרגע פונקציה שמקבלת נתיב מלא לקובץ, ומחפשת בקובץ רשימה של סטרינגים.
כל סטרינג יכול להופיע בקובץ במספר שורות, ובכל שורה כתוב כמה פעמים הוא נמצא.
למשל:
line 1:"blablabla"
line 2: "string1 appears 2 times"
line 3: "string1 appears 5 times"
הסקריפט אמור להוציא כפלט:
"string1 appears 7 times in fileX"

הקוד נראה כך:
1656488927970.png

והוא עובד

הבעיה היא שיש לי כאן המון פתיחות וסגירות של הקובץ, ניסיתי להוציא את השורה של פתיחת הקובץ מחוץ ללולאת הפור הראשונה אבל אז משום מה הוא לא עובד - הסקריפט משום מה נכנס רק ל error_string הראשון מתוך הרשימה.
מבינים למה?
 

קבצים מצורפים

  • 1656488847292.png
    1656488847292.png
    KB 45.1 · צפיות: 9

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק קכב

א שִׁיר הַמַּעֲלוֹת לְדָוִד שָׂמַחְתִּי בְּאֹמְרִים לִי בֵּית יְהוָה נֵלֵךְ:ב עֹמְדוֹת הָיוּ רַגְלֵינוּ בִּשְׁעָרַיִךְ יְרוּשָׁלִָם:ג יְרוּשָׁלִַם הַבְּנוּיָה כְּעִיר שֶׁחֻבְּרָה לָּהּ יַחְדָּו:ד שֶׁשָּׁם עָלוּ שְׁבָטִים שִׁבְטֵי יָהּ עֵדוּת לְיִשְׂרָאֵל לְהֹדוֹת לְשֵׁם יְהוָה:ה כִּי שָׁמָּה יָשְׁבוּ כִסְאוֹת לְמִשְׁפָּט כִּסְאוֹת לְבֵית דָּוִיד:ו שַׁאֲלוּ שְׁלוֹם יְרוּשָׁלִָם יִשְׁלָיוּ אֹהֲבָיִךְ:ז יְהִי שָׁלוֹם בְּחֵילֵךְ שַׁלְוָה בְּאַרְמְנוֹתָיִךְ:ח לְמַעַן אַחַי וְרֵעָי אֲדַבְּרָה נָּא שָׁלוֹם בָּךְ:ט לְמַעַן בֵּית יְהוָה אֱלֹהֵינוּ אֲבַקְשָׁה טוֹב לָךְ:
נקרא  18  פעמים

לוח מודעות

למעלה