2012-08-10 80 views
2

我正在使用VBA將Excel工作表保存爲CSV文件。該宏將其保存爲CSv,然後在Excel中打開它。我有一個Python代碼讀取文件,用戶選擇它(使用tkinter)打開。Python檢測並檢索打開的csv文件的文件名

有沒有辦法修改我的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

哪些操作系統?如果是Windows,請看Get name of active Excel workbook from Python。在問題本身的代碼可以做你要找的內容:

import win32com.client 

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

正如這個問題的答覆中提到,僅打印路徑最近打開的文件,但在你的情況下,它聽起來像宏正在打開文件,所以也許它會工作?否則,看看實際的答案 - 看起來非常完整。