Как перейти из одной папки в другую в python после прочтения всех файлов в одной папке? - PullRequest
0 голосов
/ 20 января 2020

Я пишу код для последовательной проверки размера файлов во многих папках и каталогах.

Например: у меня есть несколько каталогов и несколько файлов в каждом каталоге, а также несколько файлов в каждой папке .

Мой код должен прочитать все файлы в D:/coding/dir1/folder1, например sample1.txt, sample2.txt, sampl3.txt.

, после чтения файлов он должен перейти к D:/coding/dir1/folder2 и проверить sample4.txt, sample5.txt, sample6.txt et c. когда читает все папки в каталоге, он должен перейти в другой каталог (например, D:/coding/dir2/folder1).

Дайте мне знать, как мне этого добиться.

D:/coding
- dir1
-- folder1
--- sample1.txt
--- sample2.txt
--- sample3.txt
-- folder2
--- sample4.txt
--- sample5.txt
--- sample6.txt
- dir2
-- folder1
--- sample7.txt
...

Ответы [ 3 ]

1 голос
/ 20 января 2020

Итак, у меня следующая структура папок

D:\coding
├───folder1
│       sample1.txt
│       sample2.txt
│
└───folder2
        sample1.txt
        sample2.txt

Используйте pathlib, чтобы найти файлы, используйте функцию stat, чтобы получить размер файла.

from pathlib import Path

files = Path("D:/coding").rglob('*')
for f in files:
    if f.is_file():
        print(f'{str(f)} file size is : {f.stat().st_size}')

вывод

D:\coding\folder1\sample1.txt file size is : 728
D:\coding\folder1\sample2.txt file size is : 2378
D:\coding\folder2\sample1.txt file size is : 247
D:\coding\folder2\sample2.txt file size is : 1486
1 голос
/ 20 января 2020

вы можете написать рекурсивную функцию, которая возвращает все файлы и затем читает их в:

import os

def read_folder(folder):
    files = []
    for f in os.listdir(folder):
        f = os.path.join(folder, f)
        if os.path.isdir(f):
            files = [*files, *read_folder(f)]
        else:
            files.append(f)
    return files
0 голосов
/ 03 февраля 2020

0

Я получил решение.

import os

import re

import glob path1 = r'D: \ rmchal0 \ xml '

os.chdir (path1)

print (os.getcwd ())

listdir = os.listdir (path1)

print ( listdir)

def txt_check (путь):

os.chdir (путь)

listdir = os.listdir (путь)

для файлов в listdir :

if files.endswith('.txt'):

# txt_file= files.endswith('.txt')

    file_size = os.path.getsize(files)

    if file_size > 0:

        print("this file has data: ", files, "with file size:", file_size, "in", os.getcwd())

print (listdir) def file_size_check (путь):

os.chdir (путь)

print (os.getcwd ())

listdir = os.listdir (путь)

print (listdir)

для файлов в listdir:

if (files.find('.') == -1):

    path2= os.path.join(path,files)

    if files.lower()== 'nok':

        print(files)

        txt_check(path2)

    else:

        #path2 = os.path.join(path,files)

        file_size_check(path2)

file_size_check (path1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...