2017-07-25 41 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