![](/plugins/discourse-ngi-emojis/images/asd.gif)
Contesto: sto lavorando sotto linux con udisks tramite dbus, voglio determinare il mount point di ciascun file system e controllare se questo mount point è root ('/')
Udisks mi torna una lista di mount point, ciascuno sotto forma di byte array (per chi mastica dbus, la signature è aay).
Ciclo sulla lista, trasformo ciascun byte array in stringa, e lo testo per vedere se è uguale a '/'
Problema: so che il mount point è '/' (sono andato a pescarmi il file system apposta, e se lo stampo (vedi sotto) è effettivamente '/'), ma (mount point == '/') mi torna falso come se le due stringhe fossero diverse.
Il mio codice (era diverso perchè sono partito spavaldo, ma ho abbassato la cresta e mi sono ridotto a questo accrocchio visto che non m'aspettavo che due stringhe uguali risultassero diverse
![](/plugins/discourse-ngi-emojis/images/asd.gif)
for mp in fs.MountPoints:
print(mp)
print(bytes(mp))
print(bytes(mp).decode('utf-8'))
# primo test
a = bytes(mp).decode('utf-8')
b = '/'
print('a == b ? %s' % ('yes' if a == b else 'no'))
# secondo test
b = b'/'.decode('utf-8')
print('a == b ? %s' % ('yes' if a == b else 'no'))
# terzo test
a = '%s' % (bytes(mp).decode('utf-8'))
b = '%s' % (b'/'.decode('utf-8'))
print('a == b ? %s' % ('yes' if a == b else 'no'))
Questo l'output (commentato da me in grassetto, come vedete dal terzo commento la stringa che mi torna udisks è effettivamente uguale a '/'):
root@debian:~# ./udisk.py
[47, 0] # print(mp)
b'/\x00' # print(bytes(mp))
/ # print(bytes(mp).decode('utf-8'))
a == b ? no
a == b ? no
a == b ? no
In pratica se stampo le due stringhe a e b risultano uguali, ma a == b mi dice che sono diverse.
Ovviamente sbaglio qualcosa
![](/plugins/discourse-ngi-emojis/images/asd.gif)
![](/plugins/discourse-ngi-emojis/images/scratch.gif)