Python: ошибка при поиске файла на Mac - PullRequest
0 голосов
/ 19 октября 2019

У меня есть код для поиска определенного файла на Mac или Windows. Хотя код работает на Windows, он не работает на Mac в данный момент

Я внес некоторые изменения, и мой код теперь:

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 

if platform.system() == 'Windows':
    import win32api
    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")


if platform.system() == 'Darwin':
        def find_file_in_all_drives(file_name):
            matching_files = list()
            rex = re.compile(file_name)
            file_path = find_file("/", rex)
            if file_path:
                matching_files.append(file_path)
            return matching_files

df_location = find_file_in_all_drives("AB_NYC_2019.csv")


df = pd.read_csv(df_location[0], index_col=0)

Ошибка, которую я получаю сейчас:

IndexError: list index out of range

1 Ответ

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

В ветке "windows" вы передаете объект регулярного выражения в качестве второго аргумента для find_file:

rex = re.compile(file_name)
...   
file_path = find_file(drive, rex)
#                             ^   regex object

В ветке "darwin" вы передаете строку, отсюда и ошибку.

df_location = find_file("/", "AB_NYC_2019.csv")
#                               ^ a string. String objects don't have "search" method
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...