报错OSError: [Errno 22] Invalid argument 的一种解决方法

在尝试读取txt文件时遇到OSError: [Errno 22] Invalid argument的错误。通过调整路径、理解转义符的作用,最终解决了问题。错误源于相对路径中使用了不正确的转义字符,将3-1错误地解析为了x03-1。修正路径并避免转义符冲突后,问题得到解决。
部署运行你感兴趣的模型镜像

今天写作业的时候突然读不了txt文件了,查了很多地方,已开始写相对路径之后显示的是如下报错,仔细检查之后并没有发现代码问题。
写相对路径的时候报错
查找资料仔细检查之后依旧无法解决,决定改用写绝对路径。
填写绝对路径时又报了如下错误:写绝对路径时报错
当时为多看报错信息就查看了资料,有资料说相对路径要写\,修改之后就对了。


lines = open('D:\3-1\实验2\data\TSP50.txt','r')#原本的
lines = open('D:\\3-1\\实验2\\data\\TSP50.txt','r')#修改之后的

之后仔细查看了报错信息,发现\3-1这个文件在报错的时候变成了\x03-1。

lines = open('D:\3-1\实验2\data\TSP50.txt','r')#写的代码
'D:\x03-1\\实验2\\data\\TSP50.txt'#报错的代码

试了一下之在\3-1前加\

lines = open('D:\\3-1\实验2\data\TSP50.txt','r')

这样是正常不会报错的。
突然想起可能和转义符\有关,去学习了一下。
看了一下没找到为啥\3就变成了这样了,但个人觉得大概率和转义符相关。
顺便保存一个转义符的文章,挺有帮助。

https://www.cnblogs.com/tangmixun/p/11605581.html

报错记录一下,希望这篇文章对你有帮助。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

谢谢补充信息! 您提到的错误: ``` OSError: [Errno 22] Invalid argument: ``` 是 Python 中常见的错误,通常发生在调用某些文件操作函数时,传入了不合法或不支持的参数。在您的 bad block 解析脚本中,这个错误很可能出现在 **文件读取** 或 **Excel 输出** 的环节。 --- ### ✅ 常见原因分析 1. **文件路径问题**: - 输入文件名或路径拼写错误(如包含非法字符)。 - 路径不存在或权限不足。 - 使用了未定义的变量作为文件名。 2. **Excel 写入问题**: - 使用 `pandas.DataFrame.to_excel()` 时,如果未安装 `openpyxl` 或 `xlsxwriter` 引擎会报错。 - 输出路径非法或目标文件被其他程序占用。 3. **正则表达式提取失败**: - 如果某一行中没有匹配到 `0x...` 格式的数据,`re.search(...).group()` 会抛出异常。 --- ### ✅ 修复建议 #### 1. 检查文件路径是否正确 ```python input_file = 'bad_block_log.txt' # 确保文件真实存在,路径正确 output_file = 'bad_block_info.xlsx' # 输出路径也需合法 ``` #### 2. 添加异常处理防止中断 ```python for line in lines: if 'erase bb' in line: try: hex_value = re.search(r'0x[0-9a-fA-F]+', line).group() # 后续解析 except AttributeError: print(f"未找到十六进制数据: {line.strip()}") continue except Exception as e: print(f"解析错误: {line.strip()},错误: {e}") continue ``` #### 3. 安装 Excel 写入依赖 确保安装了 `openpyxl`(用于 `.xlsx` 文件): ```bash pip install openpyxl pandas ``` #### 4. 完整修复后的代码示例 ```python import re import pandas as pd def parse_hex_data(hex_str): match = re.search(r'0x[0-9a-fA-F]+', hex_str) if not match: return None hex_value = match.group() value = int(hex_value, 16) byte0 = (value >> 24) & 0xFF byte1 = (value >> 16) & 0xFF byte2 = (value >> 8) & 0xFF byte3 = value & 0xFF ce = byte0 plane = byte1 block = (byte2 << 8) | byte3 return ce, plane, block input_file = 'bad_block_log.txt' output_file = 'bad_block_info.xlsx' data = [] with open(input_file, 'r', encoding='utf-8') as f: for line in f: if 'erase bb' in line: result = parse_hex_data(line) if result: data.append(result) df = pd.DataFrame(data, columns=['CE', 'Plane', 'Block']) df.to_excel(output_file, index=False) print(f"解析完成,结果已保存到 {output_file}") ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值