Mam strukturę katalogów:

--- main_dir
------ aaa
--------subaaa
----------file
------ xxx
--------subxxx
----------file
------ 111
--------sub111
----------file

Itp.

Wszystkie katalogi mają różne nazwy, ale plik ma tę samą nazwę. Każdy plik ma trzy linie. Moje pytanie brzmi: jak przeczytać te trzy linie Frome każdego pliku w najszybszym sposobie?

Mam kod pisany, który szukasz plików. Ale nadal nie wiem, jak przeczytać je wszystkie. Spójrz na to:

import os

def list_files(dir):
    r = []
    for root, dirs, files in os.walk(dir):
        for name in files:
            r.append(os.path.join(root, name))
return r, print(r)
list_files('some_path)

Chcę osiągnąć coś takiego:

import os

def list_files(dir):
    r = []
    for root, dirs, files in os.walk(dir):
        for name in files:
            r.append(os.path.join(root, name))
    return r, print(r)
    with open(r[*]) as f:     #this is the question
    f.readlines()             #how to read all of the files
list_files('some_path)
-2
user6133328 5 czerwiec 2018, 10:26

3 odpowiedzi

Najlepsza odpowiedź

Aby skutecznie znaleźć każdy plik o nazwie 1.txt i wydrukuj to zawartość prefiksowana z nazwą plików byłaby po prostu:

find . -name '1.txt' -exec awk '{print FILENAME, $0}' {} +

Jeśli to nie wszystko, czego chcesz, a następnie edytuj swoje pytanie, aby wyjaśnić.

1
Ed Morton 5 czerwiec 2018, 12:21

Znalazłem rozwiązanie do otwarcia plików, tutaj jest kod:

import os

def list_files(dir):
    r = []
    for root, dirs, files in os.walk(dir):
        for name in files:
            r.append(os.path.join(root, name))
            with open(os.path.join(root, name)) as f:
                print(f.readlines())
    return r, print(r)


list_files('C:\gpdw-feeds')

Teraz mam problem ze strukturą. Jak wymienić tylko pliki w ostatnich podfolderach? Przykład:

---main_dir
----sub
-----file1
----sub_sub
-----file2

Chcę tylko odczytać plik2, ale mój kod odczytuje wszystkie pliki we wszystkich suba.

0
5 czerwiec 2018, 08:13

Rozważ użycie:

import os

listOfFiles = os.listdir("the absolute path to main_dir")
for fileName in listOfFiles:
 print fileName
 # read the lines of fileName
 with open(fileName) as f:
   contentOfFile = f.readlines()
0
Cezar Cobuz 5 czerwiec 2018, 07:36