2017-07-25 38 views
0

我正在查看是否有辦法自動執行1s恭維或翻轉文件或文件中的位。我設法打開一個二進制文件,使用語法「file = open('001.a','rb')」,然後通過堆棧溢出搜索找到一個while循環來迭代。如何做1s恭維目錄中的所有文件

當我分配給該文件的讀出部分的變量所以對於例如。 a = file.read(),然後在[1]上鍵入它顯示爲類型'str'。

我很困惑,如果我打開這個文件作爲二進制文件則不宜一切都在1和0的顯示。

對不起,我對編程真的很陌生,完全失去了。我已經搜遍並查看了很多示例,但沒有一個看起來提供了完整的解決方案,從不同的帖子中挑選和混合代碼不起作用,因爲我不斷收到類型錯誤。我嘗試使用結構,但只是不明白的語法或它應該達到什麼。

我想,我需要那個字符串轉換爲1和0的二進制然後以某種方式翻轉全0比1和1比0的,但它似乎是說起來容易,於是做了。

一個[10] '\ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF \ XFF'

感謝

回答

0

會像這樣做:

with open("/tmp/xyzzy.tmp", "rb") as fp: 
    q = fp.read() 

nf = open("/tmp/xyzzy.new", "ab")  
for i in q: 
    newbyte = ord(i)^255 
    nf.write(chr(newbyte)) 

nf.close() 

它只是逐個字節地循環訪問您的數據,並在數據字節中進行翻轉。

+0

非常感謝你。我會稍微嘗試一下。我只有2個問題。 1)當你用「rb」打開文件時,它應該以二進制打開。我認爲,如果你打印q,那麼它應該打印0和1,但它似乎沒有這樣做。不應該是二進制文件。我正在使用python 2.7 2)看起來變量q被分配爲讀取整個文件,那麼它如何在一個字節上工作。我的意思是如果你打印q它會打印出整個文件。 – Ned

+0

上面的代碼不適合我。當我鍵入nf.close()時,它會給出語法錯誤:idleFile「」中的無效語法,第4行在nf.close()上有一個指針。 Tx – Ned

+0

https://stackoverflow.com/questions/9644110/difference-between-parsing-a-text-file-in-r-and-rb-mode這是對二進制模式的解釋。 – Hannu