Ich bin neu bei den meisten davon, also vergib mir, wenn ich etwas wirklich Dummes mache. Der folgende Code ist ein einfacher Twisted xmlrpc-Server, der Dateiinformationen zurückgeben soll. Es funktioniert gut, außer dass die Funktion xmlrpc_hash
für jede Datei das gleiche Ergebnis liefert. Beispiel unter dem Code. Jede Hilfe wäre großartig!Python-Hash-Funktion als Twisted xmlrpc Klasse Ausgabe hat für jede Datei?
from twisted.web import xmlrpc, server
import os
class rfi(xmlrpc.XMLRPC):
"""
rfi - Remote File Info server
"""
def xmlrpc_echo(self, x):
"""
Return all passed args as a test
"""
return x
def xmlrpc_location(self):
"""
Return current directory name
"""
return os.getcwd()
def xmlrpc_ls(self, path):
"""
Run ls on the path
"""
result = []
listing = os.listdir(path)
for l in listing:
result.append(l)
return result
def xmlrpc_stat(self, path):
"""
Stat the path
"""
result = str(os.stat(path))
return result
def xmlrpc_hash(self, path):
"""
Hash the path
"""
from hashlib import sha1
if os.path.isfile(path):
f = open(path,'rb')
h = sha1()
block_size = 2**20
f.close()
return h.hexdigest()
else:
return 'Not a file'
if __name__ == '__main__':
from twisted.internet import reactor
r = rfi()
reactor.listenTCP(7081, server.Site(r))
reactor.run()
Beispiel Ausgabe:
import xmlrpclib
s = xmlrpclib.Server('http://localhost:7081/')
s.hash('file_1.txt')
'da39a3ee5e6b4b0d3255bfef95601890afd80709'
s.hash('file_2.txt')
'da39a3ee5e6b4b0d3255bfef95601890afd80709'
Voting als auch lokalisierte zu schließen, weil „Diese Frage ist unwahrscheinlich, dass jemals Hilfe für zukünftige Besucher; es ist nur relevant für ... eine knappe Situation, die nicht allgemein für die weltweite Zielgruppe des Internets gilt. "Versuchen Sie in Zukunft, nur die minimale Menge an Code zu posten, die für die Wiederherstellung Ihres Problems erforderlich ist. –
Punkt, aber in meiner Verteidigung war ich nicht sicher, ob es das verdrehte Objekt oder die Hash-Funktion war, die das Problem war – MFB
Natürlich - keine Sorgen. Ich weiß nur, dass es einfacher ist, Fragen mit einem höheren Signal-Rausch-Verhältnis zu beantworten, sie werden eher zukünftigen Besuchern helfen und (zumindest in meiner Erfahrung) finde ich oft die Lösung für mein Problem, wenn ich das Problem eingrenzen möchte Code, der fehlerhaft ist. –