出现Python OSError: [Errno 22] Invalid argument的来龙去脉

article/2025/11/7 2:25:31

参考解决办法:https://blog.csdn.net/weixin_44952395/article/details/105289460

问题描述:

今天我在读取文本文档txt内的文件路劲时总是报错,如下图所示

在这里插入图片描述
上网找了好几种解决办法,其中我在本文开头所述的参考办法比较有用。

发表该文章的主要目的是想说一下我遇到问题的来龙去脉,希望有遇到该类型问题的伙伴们,可以少走些弯路。

问题产生的原因:

首先介绍一下我的电脑环境:
win7系统
python3.7的运行环境(估计python3.0以上的都行)
Excel2013
WPS2021(11.1.0.11294)版本还是挺新的

我有100多张相同格式Excel表格,我想将这些表格合并成一张表格进行数据分析。

(为了节约时间,本段可以跳至一段)或许有小伙伴问了,为啥不直接使用wps工具合并或者使用Excel自带的表格批量合并功能,一是因为俺穷,没有钱开会员;二是电脑安装的WPS版本和Excel版本比较低,我上网找到的可以使用自带多表格合并功能的Excel版本都比我的版本要高,合并个表格,我就得重装Excel是不是有点多余啊(主要的原因还是太懒了,不想换Excel),被逼的走投无路,选择使用python自己写代码合并,当然也可以使用VB写个宏进行合并,奈何自己不会VB,哎~,有空也学一下。

言归正传,我的思路是:
1.将所有的Excel路径存储在txt文本文档内
2.For循环读取文本文档内的Excel路径
3.读取每个Excel路径内的各个表单sheet
4.使用pd.concat()函数即可合并表格
5.保存文件

由于我的电脑是windows7系统,电脑版本比较老了,Win7系统创建的txt文本文档时,默认的编码方式是ANSI。我创建好txt后,直接将遍历的Excel路径保存到里面了。结果在我在读取txt的文本路径时,直接报错UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xd0 in position 11: invalid continuation byte,如下图所示
在这里插入图片描述
这种问题可难不倒我,我就将保存Excel路径的txt另存为新的txt,并将编码方式改为UTF-8(当然Win10系统默认创建的txt的编码方式是UTF-8,无需修改)。
结果就出现文章标题的问题了,可以使用print()函数打印出第一条路径来,但是使用pd.read_excel()函数时,直接报错。接下来我们分析一下错误的原因


原因分析及解决办法:

 D:\ProgramData\Anaconda3\lib\site-packages\xlrd\__init__.py in open_workbook(filename, logfile, verbosity, use_mmap, file_contents, encoding_override, formatting_info, on_demand, ragged_rows)114         peek = file_contents[:peeksz]115     else:
--> 116         with open(filename, "rb") as f:117             peek = f.read(peeksz)118     if peek == b"PK\x03\x04": # a ZIP fileOSError: [Errno 22] Invalid argument: '\ufeffD:\\Desktop\\新建文件夹\\测试数据 - 副本 - 副本 (2).xlsx\n'

仔细观察OSError: [Errno 22] Invalid argument错误不难发现,在后面的路径莫名其妙的多出来几个字符
“\ufeff” 和 “\n”。既然多出来这几个字符,那我直接删掉不就可以,于是,我直接使用replace()函数直接替换掉,也可以使用其他方法(txt文本文档默认会在换行时,自动添加一个换行符‘\n’,平时我们在使用时看不到,其实被隐藏,当你使用NotePad++ 查看时候会显示很多隐藏的字符)。
代码前后修改对比

修改前:
#第一步:调用pandas包
import pandas as pd
#第二步:读取数据
#1.将多个Excel的路径放在TXT文本内,读取txt文本内的路径
#设置txt文本的路径
src=r"D:\Desktop\新建文件夹\src2.txt"
with open(src) as f:for excelpath in f.readlines():print (excelpath)        iris = pd.read_excel(excelpath,None)#读入数据文件修改后:
#第一步:调用pandas包
import pandas as pd
#第二步:读取数据
#1.将多个Excel的路径放在TXT文本内,读取txt文本内的路径
#设置txt文本的路径
src=r"D:\Desktop\新建文件夹\src2.txt"
with open(src) as f:for excelpath in f.readlines():print (excelpath)  excelpath=xlspath.strip() #删除多余的换行符 ‘\n’excelpath=xlspath.replace("\ufeff","")  #删除隐藏的字符\ufeff              iris = pd.read_excel(excelpath,None)#读入数据文件

问题完美解决,Nice,感谢博主Overload310 分享的解决办法OSError: [Errno 22] Invalid argument问题解决

我还有个疑问,那么产生这个问题的原因究竟是什么?
这次我直接创建一个txt文本文档,不过这次我直接将编码方式改为UTF-8,还会出现上述问题吗?
于是乎,我就将我的txt内的文本内容复制到Win10系统上,重新创建txt,直接保存(前面说过win10的编码方式),然后在拷到我的电脑上,结果显而易见,‘\ufeff’字符没有了。
我又测试了一下,我使用notepad++,直接使用UTF-8编码方式创建txt,果然不存在‘\ufeff’字符了
这就证明我的猜想,小结一下。


小结:

通过以上的测试,小结如下: 出现Python OSError: [Errno 22] Invalid argument的问题, 1.说明文件路径存在问题(文件路径不存在,字符串与文件路径不一致) 2.当路径前面出现比较奇怪的字符时(如‘\ufeff’,‘\u202a’ 等,注意不一定完全一样),就应该想到是由于编码原因造成的(到底是ANSI编码还是UTF-8编码,还是其他编码原因) 3.当以这些奇怪的字符开头时候,可以直接删除,不影响路径,需要仔细辨别。

具体的编码方式,我就不再这详细赘述了(主要是我也是略知一二)。

至此该问题已解决,希望对各位有所帮助。你们的点赞就是对小编的最大的支持,感谢!!


http://chatgpt.dhexx.cn/article/6F0R11HW.shtml

相关文章

彻底解决 OSError: [WinError 127] 找不到指定的程序。

原创文章,转载请注明出处! 在使用pip安装torch_geometric包时,运行时会发现报错: ModuleNotFoundError: No module named torch_sparse 于是当我又装了torch_sparse时,发现报错: OSError: [WinError 127…

ERROR: Could not install packages due to an OSError...解决方法

ERROR: Could not install packages due to an OSError…解决办法 ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问。: ‘c:\users\lenovo\python\lib\site-packages\~umpy\.libs\libopenblas.WCDJNK7YVMPZQ2ME2ZZHJJRJ3JIKNDB7.gfortran-win_am…

Python OSError: [Errno 22] Invalid argument:的出现和解决

1、在学习从文件读取数据中,写了个示例代码,读取不在同一个目录的file.txt,运行后报这个Python OSError: [Errno 22] Invalid argument:错误: (1)、首先,在F盘的python_stu中新增了一个file.tx…

OSError: [Errno 22] Invalid argument错误解决方案

在做文件读取写入操作的时候遇见OSError: [Errno 22] Invalid argument: F:\\pythonProject\\Api\\common\\2022-03-11_15:37:23test.txt的报错,单独的打印出文件路径明明是正确,但使用python open()函数读写文件时就会报该错误 错误代码: …

OSError: [Errno 22] Invalid argument问题解决

OSError: [Errno 22] Invalid argument问题解决 问题描述解决方法那么问题出在哪了?总结 问题描述 在做SSD目标检测算法的时候,在predict.py文件中遇到了这么一个报错的问题。 // ERROR Traceback (most recent call last):File "D:/ssd-keras-fromCSDN-Par…

OSError解决办法

OSError: [WinError 1455] 页面文件太小,无法完成操作。 Error loading “E:\devInstall\pytorch\Anaconda3\envs\pytorch\lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll” or one of its dependencies. 解决办法 在进行classSR训练的时候train.py报错…

已解决OSError: [Errno 22] Invalid argument

已解决OSError: [Errno 22] Invalid argument 文章目录 报错代码报错翻译报错原因解决方法千人全栈VIP答疑群联系博主帮忙解决报错 报错代码 粉丝群里面的一个粉丝用Python读取文件的时候,发生了报错(跑来找我求助,然后顺利帮助他解决了&…

OSError: [WinError 1455] 解决方案

【问题描述】 当时重装了一下系统,后面在跑深度学习程序时,报了该错误。 【原因分析】 我的python、anaconda等装在D盘,而电脑默认情况下是没有给D盘分配虚拟内存的, 所以在跑程序时, 就报了OSError的错误。 【解决方法】 只要给D盘分配…

Python文件操作错误:OSError: [Errno 22] Invalid argument(关于Windows下文件名中的敏感字符)

记录一点小知识,如果有帮助,还请留下脚印~~ 为啥会写这篇文章呢,简单说一下,我在学习如何使用爬虫爬取小视频,然后将小视频进行持久化存储,最后发现报错了😮我一看,是OSError&#x…

HTTP请求幂等性

理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协…

HTTP幂等性及GET、POST、PUT、DELETE的区别

本文转载自:http://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html Programming.log - a place to keep my thoughts on programming 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企…

HTTP请求方法及幂等性

🔥本文简要🔥 同学们好!本篇文章主要是介绍HTTP的幂等性。HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。 😄博主:程序员一灯,一个老菜鸟,哈哈哈哈 🚌一个人…

HTTP 幂等性

http://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html Todd.log - a place to keep my thoughts on programming 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见…

接口幂等性

Q1: 什么是幂等性? A: 在数学中表示某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。 在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 Q2: 什么是接口幂等性? A: 在HTTP/1.1中&a…

http的幂等性

一. 什么是幂等性 幂等(idempotent): 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,…

HTTP幂等性概念和应用

Idempotence, in programming and mathematics, is a property of some operations such that no matter how many times you execute them, you achieve the same result. 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构…

理解HTTP幂等性

理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协…

理解 HTTP 幂等性

Programming.log - a place to keep my thoughts on programming 1.理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行…

HTTP幂等性

https://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API…

HTTP/接口幂等性与解决方案

幂等性 一:什么是幂等性:二:数据访问的幂等性:2.1:增加操作:2.2:删除操作:2.3:更新操作: 三:幂等性的解决方案:3.1:前端幂…