gpt4 book ai didi

python - 如何将字节作为字节字符串而不是整数写入csv文件?

转载 作者:行者123 更新时间:2023-12-01 01:25:49 25 4
gpt4 key购买 nike

有一个字节对象列表(每个为 4 个字节)作为一个代码的输出返回,我想使用 CSV 将其保存到 .csv 文件中code> module 并稍后在另一个脚本中读回它。下面是我从python官方文档中学到的代码:

import struct
import csv

k = 0x100000
rng = range(0, k)
x1 = [b''] * k
x = 0xffffffff

for i in rng:
x1[i] = struct.pack("<L", x)
x -= 1

print(x1[0]) # b'\xff\xff\xff\xff'

List = x1

with open("test.csv", 'w', newline='') as rF:
wr = csv.writer(rF, dialect='excel')
for i in List:
wr.writerow(i)

当使用记事本查看创建的 test.csv 时,我看到的是 4 列 8 位整数,而不是一列字节字符串。 test.csv 的前几行是:

255,255,255,255
254,255,255,255
253,255,255,255
252,255,255,255
251,255,255,255
250,255,255,255
.
.
.

我做错了什么会发生这种情况?有没有办法获取包含一列字节字符串的 csv 文件?例如:

b'\xff\xff\xff\xff'
b'\xfe\xff\xff\xff'
b'\xfd\xff\xff\xff'
.
.
.

实际上我不关心我的字节如何存储在 csv 中。我只是想在另一个脚本中使用 csv.reader 将它们放回到字节列表中,并希望加载过程尽可能快。

最佳答案

这样就可以了。

import pandas as pd
import struct

k = 0x100000
rng = range(0, k)
x1 = [b''] * k
x = 0xffffffff

for i in rng:
x1[i] = struct.pack("<L", x)
x -= 1

df = pd.DataFrame()
df["data"] = x1
df.to_csv("test.csv", index=False, header=None)

这将以字节为单位输出文件。示例输出

b'\xff\xff\xff\xff'
b'\xfe\xff\xff\xff'
b'\xfd\xff\xff\xff'
b'\xfc\xff\xff\xff'
b'\xfb\xff\xff\xff'

您可以使用 pandas 而不是 csv 来读回文件。

df = pd.read_csv("test.csv")

替代方案

with open("test.csv", "wb") as f:
for i in x1:
f.write(i)
f.write('\n'.encode('utf-8'))

# Reading file
y = []
with open("test.csv", "rb") as f:
for i in f.readlines():
y.append(i.replace('\n'.encode('utf-8'), "".encode("utf-8")))
pprint(y[:10])

输出

[b'\xff\xff\xff\xff',
b'\xfe\xff\xff\xff',
b'\xfd\xff\xff\xff',
b'\xfc\xff\xff\xff',
b'\xfb\xff\xff\xff',
b'\xfa\xff\xff\xff',
b'\xf9\xff\xff\xff',
b'\xf8\xff\xff\xff',
b'\xf7\xff\xff\xff',
b'\xf6\xff\xff\xff']

关于python - 如何将字节作为字节字符串而不是整数写入csv文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53353442/

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