Доступ к данным из определенного каталога с меньшим количеством строк кодов

#python #directory #path

Вопрос:

Предположим, у меня есть файл csv data.csv , расположенный в следующем каталоге 'C:\Users\rp603\OneDrive\Documents\Python Scripts\Basics\tutorials\Revision\datasets' . Используя этот код, я могу получить доступ к своему csv-файлу:

 ## read the csv file from a particular folder
import pandas as pd
import glob
files = glob.glob(r"C:\Users\rp603\OneDrive\Documents\Python Scripts\Basics\tutorials\Revision\datasets*.csv")

df = pd.DataFrame()
for f in files:
    csv = pd.read_csv(f)
    df = df.append(csv)
 

Но, как вы можете видеть csv , путь к файлу длинный. Итак, есть ли какой-либо способ выполнить ту же операцию, при которой я могу уменьшить путь расположения моих данных, а также строку кодов.

Комментарии:

1. Наденьте его на constants.py файл и импортируйте постоянное имя.

2. Вы не можете сократить путь. Сохраните путь в переменной и используйте его внутри glob() .

3. Есть какой-нибудь пример того, как это сделать?

4. dirs_path = C:\Users\rp603\OneDrive\Documents\Python Scripts\Basics\tutorials\Revision\datasets . Используйте его в глоб — glob.glob(dirs_path) .

Ответ №1:

используйте обозначение «точка» для относительного пути (это не зависит от языка программирования)

 # example for a "shorter" version of the path
import os

my_current_position = '.' # where you launch the program
files = '' # from above

print(os.path.relpath(files, my_current_position)
 

Замечание relpath чувствительно к порядку

Вы можете использовать контекстный менеджер, чтобы открыть файл, не короче, но элегантнее

 with open(file, 'r') as fd:
    data_table = pd.read_csv(fd)
 

Ответ №2:

Если вы поместите свой скрипт в тот же каталог, что и наборы данных, вы можете просто:

 import glob
files = glob.glob("datasets*.csv")
 

Комментарии:

1. Если это так, то мне больше не нужны эти коды. Потому что я могу читать файл напрямую, используя » df=pd.read_csv(«данные.csv»)». Мои наборы данных находятся в разных папках, а основной сценарий находится в другой папке (см. Мой код)

2. Вам все равно нужно было бы использовать glob , верно?

3. Нет. Если я храню свои наборы данных и сценарий в одном и том же месте, зачем мне использовать glob. Я могу напрямую прочитать файл. Я использовал «глобус», если основной сценарий и наборы данных находятся в разных местах.