【发布时间】:2026-01-10 11:30:01
【问题描述】:
我在 Java (Android) 中有两个单独的 short 和 int 类型的大型数组。我想将它们写在一个文件中,然后在 Python 中读取它们以重新创建数组。问题是,我认为该文件是用 Java 正确创建和编写的,但我无法在 Python 中正确读取该文件。 我正在使用 Java 中的以下代码来编写数组。
File mFile = new File( this.getExternalFilesDir(null),"testFile.txt");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(mFile));
objectOutputStream.writeObject(intArray);
objectOutputStream.close();
我还使用以下方法在数组上循环编写了文件(我认为它也可以正常工作)
File mFile = new File( this.getExternalFilesDir(null),"testFile.txt");
OutputStream outputStream = new FileOutputStream(mFile);
for (int x: intArray) {
outputStream.write(x);
}
objectOutputStream.close();
如何读取此文件并在 python 中创建数组。我尝试引用 Python 结构库但无法使用它。 我尝试使用以下代码在 Python 中读取。 我尝试了一个演示数组 [1000, 1001, 1002, 1003,.....,1025]
with open('/../testFile.txt') as mFile:
for ln in mFile:
print( list( struct.unpack('I*'(len(ln)//4), ln) ) )
这会在打印语句中引发错误“错误:解包需要 104 字节的缓冲区”。
【问题讨论】:
-
"我无法在 Python 中正确读取文件" 你写的 Python 代码在哪里?运行时会发生什么?
-
AnObjectOutputStream 是 java 特定的存储类和对象(它们的属性等)。使用 DataOutputStream,并将整数读取为大端(或使用 ByteBuffer)
-
您在 Python 中根本无法读取这些数据。仅在 Java 中。
-
最大的问题是您询问了一个字节文件,但您甚至没有制作一个 int 文件。我能想到的最好的方法是用网络字节顺序以字节为单位写入文件。