参考解决办法: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.当以这些奇怪的字符开头时候,可以直接删除,不影响路径,需要仔细辨别。

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

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

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

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

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

  2. Python OSError: [Errno 22] Invalid argument:的解决办法

    今天在用到open函数时,始终报OSError: [Errno 22] Invalid argument:的错误,发现解决办法有以下几种: 方法一:输入格式错误 f = open('F:\Python ...

  3. 在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: ‘文件路径’

    如题,在使用python语言的open函数时,提示错误OSError: [Errno 22] Invalid argument: '文件路径',在查阅了大量资料后也得到了一些解决方案,但是这些解决方案 ...

  4. python中遇到报错OSError: [Errno 22] Invalid argument的解决方法

    将时间戳用python语言转换成指定日期: 代码如下: import timetimeStamp = 1589018284000 timeArray = time.localtime(timeStam ...

  5. python在使用绝对路径时出现OSError: [Errno 22] Invalid argument: ‘E:\python\python扩展\text_file\pi_digits.txt

    今天我在练习python文件的绝对路径时发现OSError: [Errno 22] Invalid argument: 'E:\python\python扩展\text_file\pi_digits. ...

  6. Python错误集锦:打开文件路径提示参数无效,OSError: [Errno 22] Invalid argument: ‘D:\juzicode\桔子code\readme.txt’

    原文链接:http://www.juzicode.com/archives/2493 错误提示: 打开文件路径提示参数无效:OSError: [Errno 22] Invalid argument: ...

  7. 成功解决Python报错: OSError: [Errno 22] Invalid argument

    今天在读入文件时老是报错 OSError: [Errno 22] Invalid argument 方法一: 将路径中的\改为/或者\\.这是因为Python中\t为换行符,而无法识别. 方法二: 手 ...

  8. python使用open的OSError: [Errno 22\] Invalid argument错误

    打开的文件名中含有一些系统的敏感字符,结果就报错了.看一段简单的代码: title = '把我看成新闻的*标题吧.' contetn = '就把我看成是新闻的内容吧!!!' with open(tit ...

  9. 对于解决python中出现的OSError: [Errno 22] Invalid argument: ‘\u202aD‘ 的解决

    对于解决python中出现的OSError: [Errno 22] Invalid argument: '\u202aD' 的解决 ** 今天这导入数据集文件时有时正常运行,有时出现了OSError: ...

最新文章

  1. iOS --- DIY文件名批量修改
  2. 大数据之Spark集群安装及简单使用
  3. 架构设计 | 分布式事务①概念简介和基础理论
  4. 基于AJAX技术的Web会议平台
  5. python机器学习案例系列教程——优化,寻找使成本函数最小的最优解
  6. ELK详解(二十一)——elastalert介绍与安装
  7. 社区奖品之USB电动迷你碎纸机
  8. AutoCAD实用小技巧教程。
  9. python游戏可以买什么书_游戏通关,电影看完,是时候用Python整理下电子书了
  10. “贵阳发生了什么”大数据主题报告会在京举行
  11. 有道云笔记v6.70去除广告
  12. webaudio ajax,Web Audio 入门之读取左右声道数据
  13. 源于小程序智能名片的两点思考
  14. 云原生和云计算的区别,普通人都能看懂!
  15. tanh () 函数
  16. 通过Xshell7连接云服务Linux系统级上传文件
  17. HPB Introduction
  18. 云南2018年GDP增长8.9% 较2017年增长速度有所下降
  19. IT新技术发展与企业信息化创新特征分析
  20. RK3568平台开发系列讲解(输入系统篇)Framework层获取和处理按键事件流程总结

热门文章

  1. Linux下 lsof 命令详解
  2. BOSS直聘流血上市:日均亏损近200万、营销费用激增、招聘陷阱引争议
  3. 普及一个数分的领域,可能对你有用
  4. 亚马逊打造自有游戏平台 欲打破苹果谷歌垄断
  5. 一个以MATLAB制作的动态扇子
  6. proxy-wasm-cpp-sdk 编译
  7. redis 怎么做消息队列 适合的场景
  8. 小米取消html打开txt,小米手机开启文件怎么删除音效 小米手机系统7.0版本关闭解锁音效方法如下...
  9. geoserver2.18(8):添加CSW(网络目录服务)扩展及前端开发调用
  10. 给php代码添加规范的注释