:-1: error: cannot open C:\Users\美式\AppData\Local\Temp\PARSE.obj.24724.0.jom for write
时间: 2023-11-27 20:47:52 浏览: 99
这个错误通常是由于文件被其他程序占用而无法写入所致。您可以尝试以下几种方法来解决这个问题:
1. 关闭所有正在使用该文件的程序,然后重试。
2. 检查您的防病毒软件是否正在扫描该文件,如果是,请等待扫描完成后重试。
3. 检查您的文件系统是否已满,如果是,请清理一些空间后重试。
4. 尝试使用管理员权限运行程序,以确保您有足够的权限来写入该文件。
相关问题
import re text_data = "Hello, World!" pattern = r"Hello" with open('binary_file.bin', 'wb') as file: file.write(text_data.encode()) file.write(text_data.encode()) file.write(text_data.encode()) file.write(text_data.encode()) with open('binary_file.bin', 'rb') as file: data = file.read() start_pos = 0 while True: match = re.search(pattern,data.decode(), start_pos) if match: print(f"Found at position {match.start()} - {match.end()}") start_pos = match.end() else: break 这段代码的运行结果如下,是为什么 Found at position 0 - 5 Traceback (most recent call last): File "C:\Users\LX\Desktop\00.py", line 16, in <module> match = re.search(pattern,data.decode(), start_pos) File "C:\Users\LX\AppData\Local\Programs\Python\Python310\lib\re.py", line 200, in search return _compile(pattern, flags).search(string) File "C:\Users\LX\AppData\Local\Programs\Python\Python310\lib\re.py", line 303, in _compile p = sre_compile.compile(pattern, flags) File "C:\Users\LX\AppData\Local\Programs\Python\Python310\lib\sre_compile.py", line 764, in compile p = sre_parse.parse(p, flags) File "C:\Users\LX\AppData\Local\Programs\Python\Python310\lib\sre_parse.py", line 958, in parse p.state.flags = fix_flags(str, p.state.flags) File "C:\Users\LX\AppData\Local\Programs\Python\Python310\lib\sre_parse.py", line 925, in fix_flags raise ValueError("cannot use LOCALE flag with a str pattern") ValueError: cannot use LOCALE flag with a str pattern
根据错误信息,报错是因为尝试在字符串模式上使用 LOCALE 标志。在这段代码中`re.search()` 函数的第二个参数应该是字节对象,而不是字符串。
解决这个问题的方法是将 `data` 变量从字节类型转换为字符串类型,并将 `pattern` 模式从字符串类型转换为字节字符串类型。
以下是修改后的代码:
```python
import re
text_data = "Hello, World!"
pattern = rb"Hello" # 将字符串模式转换为字节字符串模式
with open('binary_file.bin', 'wb') as file:
file.write(text_data.encode())
file.write(text_data.encode())
file.write(text_data.encode())
file.write(text_data.encode())
with open('binary_file.bin', 'rb') as file:
data = file.read()
start_pos = 0
while True:
match = re.search(pattern, data, start_pos)
if match:
print(f"Found at position {match.start()} - {match.end()}")
start_pos = match.end()
else:
break
```
在上述代码中,我们将 `pattern` 变量的类型更改为 `bytes`,即 `rb"Hello"`。另外,我们将 `data` 变量保持为字节对象,不再进行解码操作。这样就可以避免 LOCALE 标志的错误,并且能够正常运行 `re.search()` 函数来匹配多个位置。
阅读全文