使用pandas pd.Excel文件,带有用户输入的文件夹路径和文件名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用pandas pd.Excel文件,带有用户输入的文件夹路径和文件名相关的知识,希望对你有一定的参考价值。
我使用如下所示的pd.ExcelFile打开和解析文件,但目前仅将actual文件夹路径和文件名放在一个字符串中。
wb = pd.ExcelFile(folder_path+filename)
我想将其放入函数中,该函数要求用户提供路径和文件名并处理无效的输入。我开始了类似下面的内容,但无论如何似乎都没有在函数内部生成错误,并且我不确定如何说“ 而wb不是有效的东西”继续提示输入文件路径,直到获得有效的文件路径?
def Load_Parse():
folder_path = input('\nEnter the path to the qry_T spreadsheet here (include slashes at the start and at the end): ')
filename = input('\nEnter the name of the spreadsheet to be used here: ')
sheetname = input('\nEnter the sheet containing the data here, including the extension (e.g. "qry_Trajectory 2019.xlsx": ')
try:
wb = pd.ExcelFile(folder_path+filename)
except FileNotFoundError:
有什么想法吗?
然后我希望使用类似的方法解析文件:
df = wb.parse('filename')
答案
使用Pathlib
,os
和pandas
以及一些功能。
您需要的关键功能之一是while True
,它将不断执行代码块,直到它变为真并启动break
随时根据您自己的规范进行编辑。
模块
from pathlib import Path
import os
import pandas as pd
from xlrd import XLRDError
实际中
df = load_parser()
out:
#Hello Umar.Hussain please enter a valid target directory
#C:\Users\UmarH\Files
#1 excels_0
#2 excels_1
#Choose a number between 1 and 2
1
#Your Choice is excels_0.xlsx
#Choose a Sheet - Lists all sheets
'Sheet1'
# returns dataframe
主要功能
def load_parser():
user = os.getlogin()
print(f"Hello user please enter a valid target directory")
cmd = input('')
p = file_tester(cmd,file_type='path')
print("Please select a number from the following file")
target_file = create_excel_dict(p)
target_df = enumerate_sheets(target_file)
return target_df
助手功能
def file_tester(string_path, file_type="path"):
path = Path(string_path)
while True:
if path.is_dir():
break
else:
cmd = input(f"Please Enter a Valid file_type")
path = Path(cmd)
return path
def create_excel_dict(target_path):
xlsx_dict = i: x for i, x in enumerate(target_path.glob('*.xlsx'), 1)
for k,v in xlsx_dict.items():
print(k,v.stem)
rng = [i for i in xlsx_dict.keys()]
file_choice = input(f'Choose a number between rng[0] and rng[-1]')
while True:
try:
file_choice = int(file_choice)
print(f"Your Choice is xlsx_dict[file_choice]")
break
except KeyError:
file_choice = input(f'Choose a number between rng[0] and rng[-1]')
return xlsx_dict[file_choice]
def enumerate_sheets(target_file):
xl = pd.ExcelFile(target_file)
for sheet in xl.sheet_names:
print(sheet)
target_sheet = input("Please Type Your sheet name")
while True:
try:
df = pd.read_excel(xl,sheet_name=target_sheet)
break
except XLRDError:
target_sheet = input("Please enter a sheet from above.")
return df
以上是关于使用pandas pd.Excel文件,带有用户输入的文件夹路径和文件名的主要内容,如果未能解决你的问题,请参考以下文章
pandas中pd.read_excel()方法中的converters参数