1

こんにちは、ファイルから正確なデータを書き込んだり読み取ったりするのに問題があります。

私がやっていることは、最初にをに変換しliststringからファイルに書き込むことです

S = [63, 16, 13, 30, 22, 13, 99, 68, 75, 91, 73, 80, 90]

これを文字列に変換すると、

UpdatedPlainText = ''.join(chr(s) for s in S)

print("This is the Data:", UpdatedPlainText)

in originalの2 つのint値が存在するため、データがめちゃくちゃになります。13List\r

出力:

cDK[IPZ the Data: ?►

これはこのように表示されているだけですが、元のデータはまだそこにあります。

データはこれを使用して取得できます. ここでデータは最初に整数に変換されてから出力されます.

L = list(ord(s) for s in UpdatedPlainText)
print(L)

出力:

[63, 16, 13, 30, 22, 13, 99, 68, 75, 91, 73, 80, 90]

integerしかし、データをfromに直接変換する代わりに、String最初に in の値をUpdatedPlainTextファイルに書き込むと、

PlainText = open('uText.txt', 'w')
PlainText.write(UpdatedPlainText)
PlainText.close()

そして、readこのファイル、

PlainText = open('uText.txt', 'r')
PlainText = PlainText.read() 

ファイルからデータを印刷し、

L = list(ord(s) for s in PlainText)
print(L)

アウトプットは違うだろうし、

[63, 16, 10, 30, 22, 10, 99, 68, 75, 91, 73, 80, 90]

ご覧のとおり、値13は に置き換えられます10。これは、\rが に等しいためです。13

この問題を解決するにはどうすればよいですか? 13への変換を防ぐにはどうすればよいですか\r

4

4 に答える 4

0

これらの数値をファイルに保存し、後で読み返すことが目標ですか? それとも、特にバイナリを学習/使用しようとしていますか? あなたの目標が数値を保存することである場合、文字列などに変換する必要はありません.jsonなどを使用してください...

import json
with open('uText.txt','w') as txtfile:
    json.dump(S,txtfile)

後で読むには:

with open('uText.txt','r') as infile:
    newList = json.load(infile)
于 2013-10-20T17:49:47.173 に答える
0

「バイナリ」ではなく「テキスト」モードでファイルを開いています。ここで述べたように: http://docs.python.org/2/library/functions.html#open'bw'一部のプラットフォームでは、書き込み/読み取り時に改行文字が変換される可能性を回避するためにモードを使用する必要があります。

PlainText = open('uText.txt', 'bw')
...
PlainText = open('uText.txt', 'br')
于 2013-10-20T17:36:41.327 に答える
0

バイナリ モードでファイルを読み取ります。

with open('uText.txt', 'rb') as f:
    L = [x for x in f.read()]
于 2013-10-20T17:36:42.857 に答える