Python 读一个TXT文件和得到奇怪的行为

Python 读一个TXT文件和得到奇怪的行为,python,python-3.x,character-encoding,text-files,Python,Python 3.x,Character Encoding,Text Files,打开Adobe Media Encoder的txt日志文件时出现问题 日志本身如下所示: - Source File: /var/folders/3t/fwptgmxx4h9bkt7j0tt6wx_h0000gn/T/Untitled Project_AME/tmpAEtoAMEProject-0_RENDER.aep ... etc... 然而,当我尝试在这里复制它时,我在预览中看到了一些奇怪的东西: � � � �-� �S�o�u�r�c�e� �F�i�l�e�:� �/�v�a�r

打开Adobe Media Encoder的txt日志文件时出现问题

日志本身如下所示:

 - Source File: /var/folders/3t/fwptgmxx4h9bkt7j0tt6wx_h0000gn/T/Untitled Project_AME/tmpAEtoAMEProject-0_RENDER.aep ... etc...
然而,当我尝试在这里复制它时,我在预览中看到了一些奇怪的东西:

� � � �-� �S�o�u�r�c�e� �F�i�l�e�:� �/�v�a�r�/�f�o�l�d�e�r�s�/�3�t�/�f�w�p�t�g�m�x�x�4�h�9�b�k�t�7�j�0�t�t�6�w�x�_�h�0�0�0�0�g�n�/�T�/�U�n�t�i�t�l�e�d� �P�r�o�j�e�c�t�_�A�M�E�/�t�m�p�A�E�t�o�A�M�E�P�r�o�j�e�c�t�-
当我尝试拆分字符串时,它返回我所理解的十六进制:

\n\x00\n\x00\n\x000\x005\x00/\x002\x007\x00/\x002\x000\x002\x001\x00 \x000\x004\x00:\x00
到目前为止,我的代码是:

with open(config.ame_log_file, mode='rb') as amelog_file:
    amelog = amelog_file.read()
    stringer = amelog.decode('utf-8', 'backslashreplace')
此STRINGER变量是多行字符串。当我使用python打印它时,我得到的是普通文本。但是我在里面什么也找不到。正则表达式也不起作用。我不能操纵这根绳子。尽管upper()仍然有效。数组方括号表示法[]也适用

你能帮我吗

我尝试过所有的编码,比如UTF8、16、32、be、le。没什么帮助

2021年5月27日04:29:30下午:队列已开始

  • 源文件:/var/folders/3t/fwptgmxx4h9bkt7j0tt6wx_h0000gn/T/未命名 项目名称/tmpAEtoAMEProject-0\u RENDER.aep
  • 输出文件:/Users/tim/Downloads/tim-gfx-1621932918_2.mp4
  • 使用的预设:匹配源-高比特率
  • 视频:1920x1080(1.0),每秒25帧,渐进式,硬件编码,00:00:30:00
  • 音频:AAC,320 kbps,48 kHz,立体声
  • 比特率:VBR,1次通过,目标为10.00 Mbps
  • 编码时间:00:00:29 05/27/2021 04:30:00 PM:文件已成功编码
2021年5月27日04:30:00下午:队列已停止

当我打印(file.read())时,即使没有任何编码/解码,我在标准输出中也会得到相同的输出

如果我将stdout捕获到一个变量并再次打印,我会得到以下结果:

['', '\x00', '\x00', '\x000\x005\x00/\x002\x007\x00/\x002\x000\x002\x001\x00 \x000\x004\x00:\x002\x009\x00:\x003\x000\x00 \x00P\x00M\x00 \x00:\x00 \x00Q\x00u\x00e\x00u\x00e\x00 \x00S\x00t\x00a\x00r\x00t\x00e\x00d\x00', '\x00', '\x00', '\x00 \x00-\x00 \x00S\x00o\x00u\x00r\x00c\x00e\x00 \x00F\x00i\x00l\x00e\x00:\x00 \x00/\x00v\x00a\x00r\x00/\x00f\x00o\x00l\x00d\x00e\x00r\x00s\x00/\x003\x00t\x00/\x00f\x00w\x00p\x00t\x00g\x00m\x00x\x00x\x004\x00h\x009\x00b\x00k\x00t\x007\x00j\x000\x00t\x00t\x006\x00w\x00x\x00_\x00h\x000\x000\x000\x000\x00g\x00n\x00/\x00T\x00/\x00U\x00n\x00t\x00i\x00t\x00l\x00e\x00d\x00 \x00P\x00r\x00o\x00j\x00e\x00c\x00t\x00_\x00A\x00M\x00E\x00/\x00t\x00m\x00p\x00A\x00E\x00t\x00o\x00A\x00M\x00E\x00P\x00r\x00o\x00j\x00e\x00c\x00t\x00-\x000\x00_\x00R\x00E\x00N\x00D\x00E\x00R\x00.\x00a\x00e\x00p\x00', '\x00 \x00-\x00 \x00O\x00u\x00t\x00p\x00u\x00t\x00 \x00F\x00i\x00l\x00e\x00:\x00 \x00/\x00U\x00s\x00e\x00r\x00s\x00/\x00t\x00i\x00m\x00/\x00D\x00o\x00w\x00n\x00l\x00o\x00a\x00d\x00s\x00/\x00T\x00i\x00m\x00-\x00g\x00f\x00x\x00-\x001\x006\x002\x001\x009\x003\x002\x009\x001\x008\x00_\x002\x00.\x00m\x00p\x004\x00', '\x00 \x00-\x00 \x00P\x00r\x00e\x00s\x00e\x00t\x00 \x00U\x00s\x00e\x00d\x00:\x00 \x00M\x00a\x00t\x00c\x00h\x00 \x00S\x00o\x00u\x00r\x00c\x00e\x00 \x00-\x00 \x00H\x00i\x00g\x00h\x00 \x00b\x00i\x00t\x00r\x00a\x00t\x00e\x00', '\x00 \x00-\x00 \x00V\x00i\x00d\x00e\x00o\x00:\x00 \x001\x009\x002\x000\x00x\x001\x000\x008\x000\x00 \x00(\x001\x00.\x000\x00)\x00,\x00 \x002\x005\x00 \x00f\x00p\x00s\x00,\x00 \x00P\x00r\x00o\x00g\x00r\x00e\x00s\x00s\x00i\x00v\x00e\x00,\x00 \x00H\x00a\x00r\x00d\x00w\x00a\x00r\x00e\x00 \x00E\x00n\x00c\x00o\x00d\x00i\x00n\x00g\x00,\x00 \x000\x000\x00:\x000\x000\x00:\x003\x000\x00:\x000\x000\x00', '\x00 \x00-\x00 \x00A\x00u\x00d\x00i\x00o\x00:\x00 \x00A\x00A\x00C\x00,\x00 \x003\x002\x000\x00 \x00k\x00b\x00p\x00s\x00,\x00 \x004\x008\x00 \x00k\x00H\x00z\x00,\x00 \x00S\x00t\x00e\x00r\x00e\x00o\x00', '\x00 \x00-\x00 \x00B\x00i\x00t\x00r\x00a\x00t\x00e\x00:\x00 \x00V\x00B\x00R\x00,\x00 \x001\x00 \x00p\x00a\x00s\x00s\x00,\x00 \x00T\x00a\x00r\x00g\x00e\x00t\x00 \x001\x000\x00.\x000\x000\x00 \x00M\x00b\x00p\x00s\x00', '\x00 \x00-\x00 \x00E\x00n\x00c\x00o\x00d\x00i\x00n\x00g\x00 \x00T\x00i\x00m\x00e\x00:\x00 \x000\x000\x00:\x000\x000\x00:\x002\x009\x00', '\x000\x005\x00/\x002\x007\x00/\x002\x000\x002\x001\x00 \x000\x004\x00:\x003\x000\x00:\x000\x000\x00 \x00P\x00M\x00 \x00:\x00 \x00F\x00i\x00l\x00e\x00 \x00S\x00u\x00c\x00c\x00e\x00s\x00s\x00f\x00u\x00l\x00l\x00y\x00 \x00E\x00n\x00c\x00o\x00d\x00e\x00d\x00', '\x00', '\x00', '\x000\x005\x00/\x002\x007\x00/\x002\x000\x002\x001\x00 \x000\x004\x00:\x003\x000\x00:\x000\x000\x00 \x00P\x00M\x00 \x00:\x00 \x00Q\x00u\x00e\x00u\x00e\x00 \x00S\x00t\x00o\x00p\x00p\x00e\x00d\x00 ']
如果我以二进制格式打开此文件并打印其内容,则会得到bytes对象:

b'\n\x00\n\x00\n\x000\x005\x00/\x002\x007\x00/\x002\x000\x002\x001\x00 \x000\x004\x00:\x002\x009\x00:\x003\x000\x00 \x00P\x00M\x00 \x00:\x00 \x00Q\x00u\x00e\x00u\x00e\x00 \x00S\x00t\x00a\x00r\x00t\x00e\x00d\x00\n\x00\n\x00\n\x00 \x00-\x00 \x00S\x00o\x00u\x00r\x00c\x00e\x00 \x00F\x00i\x00l\x00e\x00:\x00 \x00/\x00v\x00a\x00r\x00/\x00f\x00o\x00l\x00d\x00e\x00r\x00s\x00/\x003\x00t\x00/\x00f\x00w\x00p\x00t\x00g\x00m\x00x\x00x\x004\x00h\x009\x00b\x00k\x00t\x007\x00j\x000\x00t\x00t\x006\x00w\x00x\x00_\x00h\x000\x000\x000\x000\x00g\x00n\x00/\x00T\x00/\x00U\x00n\x00t\x00i\x00t\x00l\x00e\x00d\x00 \x00P\x00r\x00o\x00j\x00e\x00c\x00t\x00_\x00A\x00M\x00E\x00/\x00t\x00m\x00p\x00A\x00E\x00t\x00o\x00A\x00M\x00E\x00P\x00r\x00o\x00j\x00e\x00c\x00t\x00-\x000\x00_\x00R\x00E\x00N\x00D\x00E\x00R\x00.\x00a\x00e\x00p\x00\n\x00 \x00-\x00 \x00O\x00u\x00t\x00p\x00u\x00t\x00 \x00F\x00i\x00l\x00e\x00:\x00 \x00/\x00U\x00s\x00e\x00r\x00s\x00/\x00t\x00i\x00m\x00/\x00D\x00o\x00w\x00n\x00l\x00o\x00a\x00d\x00s\x00/\x00T\x00i\x00m\x00-\x00g\x00f\x00x\x00-\x001\x006\x002\x001\x009\x003\x002\x009\x001\x008\x00_\x002\x00.\x00m\x00p\x004\x00\n\x00 \x00-\x00 \x00P\x00r\x00e\x00s\x00e\x00t\x00 \x00U\x00s\x00e\x00d\x00:\x00 \x00M\x00a\x00t\x00c\x00h\x00 \x00S\x00o\x00u\x00r\x00c\x00e\x00 \x00-\x00 \x00H\x00i\x00g\x00h\x00 \x00b\x00i\x00t\x00r\x00a\x00t\x00e\x00\n\x00 \x00-\x00 \x00V\x00i\x00d\x00e\x00o\x00:\x00 \x001\x009\x002\x000\x00x\x001\x000\x008\x000\x00 \x00(\x001\x00.\x000\x00)\x00,\x00 \x002\x005\x00 \x00f\x00p\x00s\x00,\x00 \x00P\x00r\x00o\x00g\x00r\x00e\x00s\x00s\x00i\x00v\x00e\x00,\x00 \x00H\x00a\x00r\x00d\x00w\x00a\x00r\x00e\x00 \x00E\x00n\x00c\x00o\x00d\x00i\x00n\x00g\x00,\x00 \x000\x000\x00:\x000\x000\x00:\x003\x000\x00:\x000\x000\x00\n\x00 \x00-\x00 \x00A\x00u\x00d\x00i\x00o\x00:\x00 \x00A\x00A\x00C\x00,\x00 \x003\x002\x000\x00 \x00k\x00b\x00p\x00s\x00,\x00 \x004\x008\x00 \x00k\x00H\x00z\x00,\x00 \x00S\x00t\x00e\x00r\x00e\x00o\x00\n\x00 \x00-\x00 \x00B\x00i\x00t\x00r\x00a\x00t\x00e\x00:\x00 \x00V\x00B\x00R\x00,\x00 \x001\x00 \x00p\x00a\x00s\x00s\x00,\x00 \x00T\x00a\x00r\x00g\x00e\x00t\x00 \x001\x000\x00.\x000\x000\x00 \x00M\x00b\x00p\x00s\x00\n\x00 \x00-\x00 \x00E\x00n\x00c\x00o\x00d\x00i\x00n\x00g\x00 \x00T\x00i\x00m\x00e\x00:\x00 \x000\x000\x00:\x000\x000\x00:\x002\x009\x00\n\x000\x005\x00/\x002\x007\x00/\x002\x000\x002\x001\x00 \x000\x004\x00:\x003\x000\x00:\x000\x000\x00 \x00P\x00M\x00 \x00:\x00 \x00F\x00i\x00l\x00e\x00 \x00S\x00u\x00c\x00c\x00e\x00s\x00s\x00f\x00u\x00l\x00l\x00y\x00 \x00E\x00n\x00c\x00o\x00d\x00e\x00d\x00\n\x00\n\x00\n\x000\x005\x00/\x002\x007\x00/\x002\x000\x002\x001\x00 \x000\x004\x00:\x003\x000\x00:\x000\x000\x00 \x00P\x00M\x00 \x00:\x00 \x00Q\x00u\x00e\x00u\x00e\x00 \x00S\x00t\x00o\x00p\x00p\x00e\x00d\x00 '

多亏了@tripleee,问题才得以解决

工作字符串在解码变量中

with open(config.ame_log_file, 'rb') as amelog_file:
    amelog = amelog_file.read()
    decoded = amelog.decode('utf-16le', 'ignore')

文件显然是UTF-16;您必须指定编码。我认为您没有正确尝试使用
utf-16le
对其进行解码。但是我们不能根据使用未知编码的复制/粘贴来决定编码。请以明确的形式提供(代表性的,最好是小样本的)数据的实际内容;十六进制转储有问题的字节,每边有几个字节的上下文就足够了,特别是如果你能告诉我们你认为这些字节应该代表什么的话。另请参见好的,我将在文章中添加更多片段。顺便说一下,这是文本文件的链接,谢谢您的编辑。您显示的数据似乎被截断,但我可以很好地解码它的开头。演示:非常感谢!我保存了b[0:190]。将('utf-16le')解码为一个变量,它现在是一个可操作的字符串。请您提出一种方法来忽略截断的不可编码字节,这样我就可以从字节中提取尽可能多的文本了?