#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. Я могу напрямую прочитать файл. Я использовал «глобус», если основной сценарий и наборы данных находятся в разных местах.