Nano Hash - криптовалюты, майнинг, программирование

VB.NET Создание папок на основе имен файлов

Приведенный ниже код создает несколько папок на основе разных имен файлов и перемещает эти файлы в новые папки. Например, файлы ABC и XYZ перемещаются во вновь созданную папку с именем ABC и XYZ. Я хочу расширить код, чтобы позволить немного другим именам файлов помещаться в общую папку. Например, я хочу, чтобы файлы ABC_rock, ABC_soil и ABC_water были помещены в папку с именем ABC Still, а файлы XYZ_rock, XYZ_soil и XYZ_water — в папку с именем XYZ. Я не хочу создавать отдельную папку для ABC_rock, ABC_soil и ABC_water. Любые предложения приветствуются. Спасибо за помощь.

        Dim strOutputLocation As String = "C:\Temp"
        Dim rootPath As String = strOutputLocation

        For Each filepath As String In IO.Directory.GetFiles(rootPath)

            Dim folderName As String = IO.Path.GetFileNameWithoutExtension(filepath)
            Dim folderPath As String = IO.Path.Combine(rootPath, folderName)

            If Not IO.Directory.Exists(folderPath) Then
                IO.Directory.CreateDirectory(folderPath)
            End If

            Dim fileName2 As String = IO.Path.GetFileName(filepath)
            Dim newFilePath As String = IO.Path.Combine(folderPath, fileName2)

            File.Move(filepath, newFilePath)

        Next
04.05.2011

Ответы:


1

Разбейте имя файла на части с самого начала — я использую здесь символ подчеркивания, но вы можете изменить его по своему усмотрению. Разделение создаст по крайней мере один элемент во всех случаях, и если вас интересует только первая часть, вы можете справиться с этим, изменив одну строку:

Dim folderName As String = IO.Path.GetFileNameWithoutExtension(filepath).Split("_")(0)

Если есть подчеркивание, он использует все до первого. Если символы подчеркивания отсутствуют, будет использоваться полное имя файла.

04.05.2011
  • Я попытался разбить на два символа подчеркивания __ вместо одного, однако он просто разбивается на первый экземпляр _. Как разделить на __? 09.05.2011

  • 2

    Если вы знаете, каким будет ваш символ-разделитель, вы можете использовать что-то простое, например .Split(), после извлечения имени файла. Если имена файлов могут быть более сложными, вам нужно будет использовать RegEx.

    var fileName = "ABC_rock";
    var parts = fileName.Split(new String[] { "_" }, System.StringSplitOptions.RemoveEmptyEntries);
    if (parts.Length >= 1) {
        var folderName = parts[0];
    
        // Move fileName here...
    }
    

    Обратите внимание, что приведенный выше код предполагает, что вашим разделителем является символ подчеркивания.

    04.05.2011

    3

    Если все ваши имена файлов имеют одинаковый формат PREFIX_somethingElse, вы можете использовать функцию Split() для каждого имени файла, чтобы найти общие префиксы. Когда у вас есть список всех префиксов, вы можете создавать папки, используя эти префиксы, а затем перемещать каждый файл в папку, названную его префиксом.

    Для этого вам нужно знать символ-разделитель в имени файла, чтобы использовать функцию Split().

    Процесс будет примерно таким:

    1. Объявить список строк
    2. Итерируйте имена файлов, используя split(), чтобы получить префикс и добавить каждый новый префикс, который вы найдете, в список.
    3. Переберите список и создайте папку для каждого префикса.
    4. Переберите имена файлов и переместите каждый файл в папку, названную в качестве префикса этого имени файла.

    Процесс можно значительно оптимизировать, если использовать более сложные структуры данных, чтобы избежать многократных итераций, но это основная идея.

    04.05.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..