我正在创建一个篮球数据可视化应用程序,并且我已经完成了GUI,现在只是尝试导入我的数据库(一个excel文件)。我正在使用熊猫,当我运行此代码时,出现“没有这样的文件或目录”错误。我知道我必须获取文件路径,但是如何做到这一点(Mac OS X)并实现它以将代码定向到文件中?
我尝试直接使用path = r'C :(在此处插入路径)复制和粘贴文件路径
#Basketball DataVis (Data Visualization)
#pylint:disable = W0614
#By Robert Smith
#Import
import tkinter
import os
import pandas as pd
from tkinter import *
from PIL import Image, ImageTk
from pandas import *
#Import the excel file to use as a database
data = pd.read_excel("nbadata.xlsx", sheetname= "Sheet1")
答案 0 :(得分:0)
最简单的方法是打开终端的一个实例,然后将文件拖到终端屏幕中-这将打印出您可以在脚本中使用的路径。
请注意,mac文件路径不是以C:开头。
答案 1 :(得分:0)
如果您不知道xlsx文件在哪里(因此您不能提供相对路径或绝对路径),但是我知道它的确切名称并且也知道,我建议您使用递归方法来解决问题。此文件所在的根目录。
对于这种情况,只需将根路径和文件名传递给递归函数,它将提供所有匹配文件名的绝对路径列表。
最后,如果您确定不再有相同名称的文件,或者可以在控制台上打印该列表并重试,则可以从该列表中选择第一个。
我发现这种方法最适合我,下面给出了一个简单的示例。
目录结构:
H:\RishikeshAgrawani\Projects\GenWork\Python3\try\test>tree . /f
Folder PATH listing for volume New Volume
Volume serial number is C867-828E
H:\RISHIKESHAGRAWANI\PROJECTS\GENWORK\PYTHON3\TRY\TEST
│ tree
│
├───c
│ docs.txt
│
├───cpp
│ docs.md
│
├───data
│ nbadata.xlsx
│
├───js
│ docs.js
│
├───matlab
│ docs.txt
│
├───py
│ │ docs.py
│ │
│ └───docs
│ docs.txt
│
└───r
docs.md
这是递归实现,请尝试一下。
import os
def search_file_and_get_abspaths(path, filename):
"""
Description
===========
- Gives list of absolute path of matched file names by performing recursive search
- [] will be returned in there is no such file under the given path
"""
matched_paths = []
if os.path.isdir(path):
files = os.listdir(path)
for file in files:
fullpath = os.path.join(path, file)
if os.path.isdir(fullpath):
# Recusive search in child directories
matched_paths += search_file_and_get_abspaths(fullpath, filename)
elif os.path.isfile(fullpath):
if fullpath.endswith(filename):
if not path in matched_paths:
matched_paths.append(fullpath)
return matched_paths
if __name__ == "__main__":
# Test case 1 (Multiple files exmample)
matched_paths = search_file_and_get_abspaths(r'H:\RishikeshAgrawani\Projects\GenWork\Python3\try\test', 'docs.txt');
print(matched_paths)
# Test case 2 (Single file example)
matched_paths2 = search_file_and_get_abspaths(r'H:\RishikeshAgrawani\Projects\GenWork\Python3\try\test', 'nbadata.xlsx');
print(matched_paths2)
# ['H:\\RishikeshAgrawani\\Projects\\GenWork\\Python3\\try\\test\\c\\docs.txt', 'H:\\RishikeshAgrawani\\Projects\\GenWork\\Python3\\try\\test\\matlab\\docs.txt', 'H:\\RishikeshAgrawani\\Projects\\GenWork\\Python3\\try\\test\\py\\docs\\docs.txt']
if matched_paths2:
xlsx_path = matched_paths2[0] # If your file name is unique then it will only be 1
print(xlsx_path) # H:\RishikeshAgrawani\Projects\GenWork\Python3\try\test\data\nbadata.xlsx
data = pd.read_excel(xlsx_path, sheetname= "Sheet1")
else:
print("Path does not exist")