gpt4 book ai didi

python - 类型错误 : coercing to Unicode when run thru Windows CMD

转载 作者:行者123 更新时间:2023-12-01 06:44:22 24 4
gpt4 key购买 nike

您好,通过 CMD 运行时,我的脚本中出现下一个错误,但它在 MVS 调试器中成功运行。

Traceback (most recent call last):
File "D:\Work\PyLineCounter\PyLineCounter\PyLineCounter\PyLineCounter.py", line 22, in <module>
file = open(file_path,'rb')
TypeError: coercing to Unicode: need string or buffer, WindowsPath found
#!/usr/local/bin/python
# coding=utf-8

import re
import os
import io
import sys
import codecs
import chardet
import time

from pathlib import Path

PATH = "d:/work/"
strings_counter = 0

for file_path in Path(PATH).rglob('*.h'):

file = open(file_path,'rb')
raw_data = file.read()
file.close()

最佳答案

您使用的 Python 版本尚不支持在 open() 函数调用中使用 pathlib 路径对象。你只能这样做as of Python 3.6及以上。

你可以:

  • 升级到 Python 3.6 或更高版本
  • 使用 str() 将路径自行转换为字符串,因此 open(str(file_path), 'rb')
  • 使用Path.open() method而不是 open() 函数。
  • 使用Path.read_binary() method而不是手动打开并读取数据。

最后一个选项显然是这里最干净的,因为它可以让您删除两行代码:

for file_path in Path(PATH).rglob('*.h'):
raw_data = file_path.read_bytes()

但是,这确实需要 Python 3.5 或更高版本。这已经是一个相当旧的版本了,only receives security fixes now 。如果您使用的是 Python 3.4,您确实想要升级,因为该版本不再获得任何支持。

但是如果您坚持使用 Python 3.4,那么请使用 Path.open():

for file_path in Path(PATH).rglob('*.h'):
with file_path.open('rb'):
raw_data = file_path.read_bytes()

请注意,您使用了 file = open(...)使用 file 执行某些操作file.close( ) 通过使用文件作为上下文管理器可以更好地处理,因此 with open(...) as file:, (new indent level), 做一些事情>file,并将其留给 with 语句来为您关闭文件对象。我在上面的 Path.open() 示例中使用了该模式。

关于python - 类型错误 : coercing to Unicode when run thru Windows CMD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59306261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com