Python обнаруживает и извлекает имя файла open csv


Я использую VBA для сохранения листа excel в виде CSV-файла. Макрос сохраняет его в формате CSv, а затем открывает в excel. У меня есть код python, который читает файл, выбрав его (используя tkinter) для открытия.

Есть ли способ изменить мой код python для обнаружения открытого csv-файла, чтобы я мог пропустить этап выбора пользователя? Я хочу, чтобы он вернул путь к файлу или прочитал открытый csv-файл. Это текущая версия моего кода, которая работает, если файл csv открыт в excel:

import numpy as np
from Tkinter import Tk
from tkFileDialog import askopenfilename
tk=Tk()
tk.withdraw()
filename = askopenfilename()
data = np.genfromtxt(filename, dtype=[('x',float),('y',float)],comments='"', delimiter=',',skip_header=1,missing_values=True)
tk.destroy()
x=data['x']
x = x[np.logical_not(np.isnan(x))]
y=data['y']
y = y[np.logical_not(np.isnan(y))]
print x
print y
1 2

1 ответ:

Какая ОС? Если это Windows, посмотрите на Get name of active Excel workbook from Python . Код в самом вопросе может сделать то, что вы ищете:

import win32com.client

xl = win32com.client.Dispatch("Excel.Application")
print(xl.ActiveWorkbook.FullName)

Как уже упоминалось в ответе на этот вопрос, это только выводит путь к самому недавно открытому файлу, но в вашем случае это звучит так, как будто макрос открывает файл, так что, возможно, это сработает? В противном случае взгляните на действительный ответ - он кажется очень полным.