首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ValueError:无效的文件路径或缓冲区对象类型:

ValueError:无效的文件路径或缓冲区对象类型:
EN

Stack Overflow用户
提问于 2021-11-30 14:59:47
回答 2查看 361关注 0票数 0

我是python新手,我的代码需要帮助。我正在尝试将多个excel文件中的数据附加到一个文件中。但有些地方出了问题。

代码语言:javascript
运行
复制
import pandas as pd
import argparse
import os

parser = argparse.ArgumentParser(description="extract data from machine")

parser.add_argument("-d","--data", dest="data", required =True, action = "store", type=argparse.FileType("r", encoding="latin-1"), nargs="+",
                     help="the excel file you want to analysis")
parser.add_argument("-o","--outFileNamePrefix",action="store",default="foo",dest="out",
                    help="the output file name")
args = parser.parse_args()

output = pd.DataFrame(columns=['Target','Sample','SQ Mean', 'SQ Std. Dev'])
output.to_excel("%s_%s.xlsx"%(args.out), index=False)
filenames = args.data
for filename in filenames:
    for line in filename:
        data = pd.read_excel(args.data)
        data = data.to_excel(os.path.join("%s_%s.xlsx"%(args.out)))

我有这个错误

代码语言:javascript
运行
复制
ValueError: Invalid file path or buffer object type: <class 'list'>

任何建议都将是有帮助的,请!

EN

回答 2

Stack Overflow用户

发布于 2021-12-05 06:46:57

感谢大家的建议!现在它起作用了!

下面是使用命令行参数将多个包含某些数据的excel文件合并到一个文件中的最终工作代码。

代码语言:javascript
运行
复制
import pandas as pd
import argparse

# parse command line args
parser = argparse.ArgumentParser(description="Extract data from machine")
parser.add_argument("-d","--data", dest="data", action = "store", nargs="+",
                     help="the excel file you want to analysis")
parser.add_argument("-o","--outFileNamePrefix",action="store",default="foo",dest="out",
                    help="the output file name")
args = parser.parse_args()

"""input data"""
df = pd.DataFrame()
for file in args.data:
    data = pd.read_excel(file)
    df = df.append(data)
data_final = df.to_excel("%s_%s.xlsx"%(args.out), index=False)

首先,我让args.data成为一个string,因为@hpaulj建议我删除--data FileType,所以为了让它变得简单。然后,多亏了@joanis,使for file in args.data:append数据循环到空的数据帧。

票数 1
EN

Stack Overflow用户

发布于 2021-12-02 16:14:47

args.data似乎是一个List,所以也许可以试试args.data[0]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70171461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档