2016-04-27 16 views
0

私はいくつかのファイルを作成するコードを持っているので、アイコンを追加することもできます。私の考えは、ファイルを読み込んでそれをエンコードすることでした。コードを実行するときにデコードする文字列を格納することはできますが、それは動作していないように見えます(ファイルの読み込みに失敗したようです)。理由は分かりません。cmdからpythonを実行しているときにファイルが正しく読み取られない

これは私が使用しているテストコードです:

icon = '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\n' # 
with open('C:/ProgramData/Unified Remote/Remotes/Custom/SteamBasic/icon.png', 'r') as f: 
    a = f.read() 
    b = a.encode('base64') 
    print len(a) 
    print len(b) 
print b == icon 

with open('C:/ProgramData/Unified Remote/Remotes/Custom/SteamBasic/icon2.png', 'w') as f: 
    f.write(icon.decode('base64')) 
with open('C:/ProgramData/Unified Remote/Remotes/Custom/SteamBasic/icon2.png', 'r') as f: 
    print b == f.read().encode('base64') 

を正しい結果が、これらは(Mayaでそれを実行しているから)、次のとおりです。

5686 
7684 
True 
True 

しかし、私のpythonファイルに私はからこれを取得同じコードブロック:

5 
9 
False 
False 

何が起こっているのですか?私はbase64.b64encode().encode('base64')の2つの異なる画像で試してみましたが(明らかにそれほど大きな違いはありませんでした)、管理者としてcmdを実行しても何もしませんでした。
steam

+0

あなたのファイルには何がありますか?最初のステップから始めます。 'a = f.read()'が完全な内容よりも少なく読む理由はありません。なぜあなたは '5'を見ているのですか?コンソールから実行し、 'a'を調べます。 – alexis

+0

'a'に' ePNG'のようなものが登場しているので、明らかに何かが間違っています。 'b'は' iVBORwo = ' – Peter

+0

を出していますあなたのファイルには何が入っていますか?ファイルの内容が問題であるようです。 – alexis

答えて

3

問題はテキストファイルとして処理されるべきアイコンファイルの原因となるモードは「r」でファイルを開くことである:

は、ここで私は例に使用していた蒸気のアイコンです。 'r'を 'rb'に変更して、ファイルをバイナリファイルとして扱いたいことを示します。

ファイルをテキストファイルとして読み込むと、PNGのヘッダーにある '\ x1a'文字がファイルの終わりのマーカーとして機能するため、read()は半ダースの文字のみを返します'\ x1a'の前に表示されます。

関連する問題