Python: как мне присвоить результат моей функции переменной, которую я могу прочитать read_csv - PullRequest
1 голос
/ 14 октября 2019

Код, который я имею, определяет, какая операционная система используется. Затем он должен искать всю систему для моего файла CSV. Когда он найден, мне нужно иметь возможность читать в файле csv (чтобы он не только внутри функции, но и использовался во всем моем коде).

Пока я могу найти свой файл, но у меня возникают проблемы с назначением пути к файлу переменной, чтобы я мог прочитать в этой переменной с pd.read_csv()

кодом, которыйЯ имею в следующем:

import pandas as pd
import os
import re
import win32api

# https://stackoverflow.com/questions/13067686/search-files-in-all-drives-using-python
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))
                    return result
                    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 )
        return 

#file_name = "AB_NYC_2019.csv"
#find_file_in_all_drives(file_name)

df_location = find_file_in_all_drives( "AB_NYC_2019.csv" )
df = pd.read_csv(df_location)

Я думаю, что что-то не так с return.

Спасибо за ваше время.

Сейчас возвращается «Нет»

1 Ответ

1 голос
/ 14 октября 2019

Вы ничего не возвращали откуда-либо.

Я считаю, что ваш код работает, и я сделал необходимые вызовы return, но не проверял его:

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:
                file_path = os.path.join(root, f)
                return file_path

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

df_location = find_file_in_all_drives("AB_NYC_2019.csv")
first_file_df = pd.read_csv(df_location[0]) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...