Я Python Копирование всех CSV-файлов - PullRequest
1 голос
/ 16 марта 2020
!find ~/DataFolder/CSVfolders -name "*.csv" > paths.txt

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

!find C:/directory/withdata -name "*.csv" > paths.txt

Я делаю это в записной книжке Jupyter у моей первой попытки была папка вне папки записной книжки Jupyter, а затем я положил ее в папку записной книжки Jupyter, она повторяет эти две вещи.

Доступ запрещен - ... .

Файл не найден -name

Я новичок в этих командах оболочки bash в настройке I Python, у меня также есть ОС windows, любые советы или источники будет принята с благодарностью.

1 Ответ

2 голосов
/ 16 марта 2020

Два решения: PowerShell и Python

Ваш код не работает, поскольку вы должны использовать Windows эквивалентную команду для Unix find.
Однако, учитывая, что вы работаете с Python, код Python может быть универсальным решением.

Проблема

Используя восклицательный знак !, вы вызываете оболочку своих систем.
Таким образом, выполняемая команда зависит от системы.

Пример

# Change the name of file1 to file2 in Unix-like systems
# But it doesn't work on Windows
!mv file1 file2

# The Windows equivalent
!ren file1 file2

У вас есть похожая проблема. Find существует как в Unix -подобном, так и в Windows; однако назначение обеих команд различно.
В Windows, find команда представляет собой фильтр для поиска строк во входном потоке данных, которые содержат или не содержат указанную строку ( то есть, это как grep команда Unix).

Решение: с Windows PowerShell

После прочтения этой нити я предлагаю следующее решение с использованием Windows PowerShell.

!Get-ChildItem -Filter "*.csv" -Recurse "C:/directory/withdata" > paths.txt

Решение: с Python

Скоро ...:)

...