0

我在 CS 课上,我正在做作业。我已经完成了所有工作,但我陷入了一个对我来说毫无意义的巨大错误。

在 CMD 中运行程序第一部分的命令如下:

python3 bead_tracker.py 25 180.0 25.0 数据/run_1/*

(* 用于省略一系列文件名,因为我不想打出来)

该命令输出一堆浮点数,最多保留 4 个小数位。到目前为止,事情仍然很好。

python3 bead_tracker.py 25 180.0 25.0 数据/run_1/* > output.txt

用于将命令的输出存储到 output.txt 中。打开文件一切看起来都很好。它只是一系列数字。

我们的课程使用https://introcs.cs.princeton.edu/python/code/stdio.py.html作为输入和输出的库。该函数stdio.readString()只是从标准输入中读取第一个字符串。

在这种情况下,函数应该从 output.txt 返回第一个字符串,应该是“11.1876”。

相反,它返回这个怪物:['ÿþ1\x001\x00.\x001\x008\x007\x006\x00']。

我认为这将是函数 stdio.readString() 的问题,但如果我手动创建一个文本文件并输入相同的数字,它会完美运行。

我不明白为什么会这样。

4

2 回答 2

1

您称为 a 的数组monstrosity实际上是您正在寻找的数字,即11.1876- 但每个数字和浮点数的开头都有NULL其ASCII。\x00它可能与文件中指针的实际位置以及您的代码认为的位置有关。

如果没有代码,我无能为力,但您可以检查一下: Python's read and write add \x00 to the file

于 2020-11-10T00:34:52.527 回答
0

Unicode 标头

UTF-8 239 187 191  
UTF-16 (BE) FE FF 254 255 þÿ 
UTF-16 (LE) FF FE 255 254 ÿþ 
UTF-32 (BE) 00 00 FE FF 0 0 254 255 ␀␀þÿ (␀ refers to the ASCII null character) 
UTF-32 (LE) FF FE 00 00[t 2] 255 254 0 0 ÿþ␀␀ (␀ refers to the ASCII null character) 
UTF-7[t 1] 2B 2F 76 38

从表中可以看出,该文件是 UTF-16 LE。所以要么读入 Unicode,要么写出 ANSI。CMD.exe 写入 ANSI,但如果程序以 Unicode 写入屏幕,它将重定向 Unicode。

于 2020-11-10T01:11:43.623 回答