Python: найти файл CSV на любом компьютере / операционной системе - PullRequest
0 голосов
/ 12 октября 2019

меня зовут Талиесин. Я работаю над школьным проектом, для которого я должен выполнить многократный анализ данных. Прежде всего, мне нужен код, который ищет файл по имени по всему компьютеру. На данный момент у меня есть код, который я позаимствовал из другого потока при переполнении стека, но он мне также нужен для работы в других операционных системах, например, в Mac. Также с кодом, который я использую сейчас, я не знаю, как преобразовать результат, во что-то, что я могу открыть с помощью pd.read_csv().

Это мой код до сих пор:

def find_file(root_folder, rex):
    for root,dirs,files in os.walk(root_folder):
        for f in files:
            result = rex.search(f)
            if result:
                print(os.path.join(root, f))
                break # if you want to find only one

def find_file_in_all_drives(file_name):
    #create a regular expression for the file
    rex = re.compile(file_name)
    for drive in win32api.GetLogicalDriveStrings().split('\000')[:-1]:
        find_file( drive, rex )


find_file_in_all_drives( "AB_NYC_2019.csv" )

df_location = find_file_in_all_drives( "AB_NYC_2019.csv" )
df = pd.read_csv(r'"{}"'.format(df_location))

Итак, чтобы подвести итог моих вопросов:

1: Как изменить мой код, чтобы он работал на любой платформе?

2: Как я могу использовать путь, который выходит изкод, читать его как csv используя панд?

Я совершенно новичок в Python. Я изучил основы через Datacamp для моего обучения.

Спасибо, что уделили время!

1 Ответ

0 голосов
/ 12 октября 2019

Mac - ОС на базе Linux. Таким образом, для Mac и Linux вы можете использовать утилиту ' find ' из самого терминала.

Для поиска в определенном каталоге (например, / home / project / csv) -

find /home/project/csv | grep "AB_NYC_2019.csv"

Для поиска во всей файловой системе -

find / | grep "AB_NYC_2019.csv"

Однако,если вы по-прежнему хотите использовать его как часть своей программы на python, вы можете запустить

import subprocess

paths = [line.decode("utf-8") for line in subprocess.check_output("find /home/project/csv | grep 'AB_NYC_2019.csv'", shell=True)]

. Он найдет все такие файлы в каталоге поиска и выдаст список их путей.


Чтобы определить, в какой системе работает ваша программа на Python,

import platform
platform.system() 
#Darwin  - for Mac OS
#Linux   - for Linux
#Windows - for Windows

Вы можете установить условие if для значения platform.system () и запустить любую функцию поиска соответствующим образом.

Надеюсь, это поможет.

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