2017-07-25 8 views
0

Je cherche à savoir s'il existe un moyen de faire automatiquement un complément 1s ou retourner les bits dans un fichier ou des fichiers. J'ai réussi à ouvrir un fichier en binaire en utilisant la syntaxe "file = open ('001.a', 'rb')", puis en cherchant à travers un débordement de pile, j'ai trouvé une boucle while pour itérer.Comment faire 1s compliment sur tous les fichiers dans un répertoire

Lorsque j'attribue une variable à la partie lecture du fichier, par ex. a = file.read() puis tapez sur un [1] il apparait comme type 'str'.

Je suis confus comme si j'ai ouvert ce fichier en tant que fichier binaire, alors tout ne devrait pas être montré en 1 et 0.

Désolé est vraiment nouveau à la programmation et je suis totalement perdu. J'ai parcouru et regardé beaucoup d'exemples, mais aucun d'entre eux semblent donner une solution complète et le choix et le mélange du code de différents messages ne fonctionne pas car je continue d'obtenir des erreurs de type. J'ai essayé d'utiliser struct, mais je ne comprends pas la syntaxe ou ce qu'elle est censée accomplir.

Je pense que j'ai besoin de convertir cette chaîne à un binaire de 1 et 0 et puis en quelque sorte retourner tous les 0 à 1 et 1 à 0, mais il semble être plus facile à dire alors fait.

un [10] '\ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff \ xff'

Merci

Répondre

0

Would quelque chose comme ça do:

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() 

Il fait simplement pivoter votre octet de données par octet et retourne les bits au fur et à mesure.

+0

Merci beaucoup pour cela. Je vais essayer dans un peu. J'ai juste 2 questions. 1) Lorsque vous ouvrez le fichier avec "rb", il est supposé s'ouvrir en binaire. Je prends cela pour signifier que si vous imprimez q, alors il devrait imprimer les 0 et 1, mais il semble que ce n'est pas le cas. Le fichier ne devrait pas être en binaire. J'utilise python 2.7 2) Il semble que la variable q soit assignée pour lire le fichier entier puis comment cela fonctionne sur un octet. Je veux dire que si vous imprimez q, il imprimera le fichier entier. – Ned

+0

Le code ci-dessus ne fonctionne pas pour moi. Quand je tape nf.close() cela donne une erreur de syntaxe: syntaxe invalide dans idleFile "", ligne 4 avec un pointeur sur nf.close(). Tx – Ned

+0

https://stackoverflow.com/questions/9644110/difference-between-parsing-a-text-file-in-r-and-rb-mode Ceci est une explication du mode binaire. – Hannu