Python 如何将字节作为字节字符串而不是整数写入csv文件?
有一个字节对象列表(每个是4个字节),作为一个代码的输出返回,我想使用Python 如何将字节作为字节字符串而不是整数写入csv文件?,python,csv,Python,Csv,有一个字节对象列表(每个是4个字节),作为一个代码的输出返回,我想使用csv模块将其保存到csv文件中,稍后在另一个脚本中读取。以下是我从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[
csv
模块将其保存到csv
文件中,稍后在另一个脚本中读取。以下是我从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)
发生这种事我做错了什么?有没有一种方法可以获得一列字节字符串的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)
您可以使用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']
CSV
无法保存二进制数据。考虑使用原始的二进制
文件而不是csv
。有没有其他方法不必使用第三方库就可以做到这一点@PouJa用备选方案更新了答案。看看这是否有效。非常感谢你的帮助。当我确定它有效时,我一定会接受答案。只是想知道如何将它恢复到另一个脚本中的字节项列表@PouJa我已经更新了阅读答案,并对替代写作方法进行了轻微更改。
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']