by Guest » 07 Jan 2025, 13:57
Ich rufe eine Datei über FTP auf zwei Arten von einem NAS ab:
- mit einer .bat-Datei, in der ich Folgendes habe:
a) ftp -s:C:\TEMP\runTheDownload.txt (Das Skript ruft den Code aus der TXT-Datei auf)
b) Die .txt-Datei enthält Folgendes:
Code: Select all
open some.address.eu
username
password
ascii
quote "site SBDataconn=ANOTHER.ADD.RESS.HERE
get 'THE.NAS.LOCATION.OF.THE.FILE' C:\TEMP\output.txt
- Ich habe einen Python-Code mit den obigen Eingaben, in dem ich ftplib und den folgenden Code verwende:
Code: Select all
with FTP(ftp_server) as ftp:
ftp.login(ftp_user, ftp_password)
print("Connected to FTP server.")
# Set transfer mode to ASCII
ftp.sendcmd("TYPE A")
# print("Switched to ASCII mode.")
# Execute the custom FTP command (quote)
ftp.sendcmd('SITE SBDataconn=ANOTHER.ADD.RESS.HERE')
print("Custom SITE command executed.")
# Download the file
with open(local_file, 'wb') as file_obj:
# Write info to buffer
ftp.retrbinary(
f"RETR {remote_file}", file_obj.write)
Wenn ich mir beim ersten Ansatz die Datei „output.txt“ ansehe, erhalte ich vollkommen gute Daten wie 001, abc, 2013230..., die Python-Ausgabe gibt mir jedoch codierte Rückgaben wie:
\x7f\xf0\xf0\xf1\x7fk\x7f\xf0\xf0\xf0\xf0\xf1\xf0\xf2\xf4\xf9\x7fk\x7f\xf0\xf0\xf 0\xf0\xf0\xf0\xf0\xf0\xf0\x7fk\x7fN\xf0\x7fk\x7f\xf0\xf4\x7fk\x7f\xf0\xf0\x7fk\x7f@@@@@ @@@@@\x7fk\x7f\xd6\xd7\xc3\xe4\xe2\xc5\xd9@\x7fk\x7f\x81\xa4\xa3\x96\x94\x81\xa3\x89\xa 2\x83\x88\x85@\xc5\x89\x95\xa2\xa3\xa4\x86\xa4\x95\x87@`@\xf1K\xf7K\xf2@@@@@@@@@
Ich frage mich, was mir in meinem Python-Code fehlt, um ihn so gut umzuwandeln, wie es mit der .bat-Datei gemacht wird.
Ich habe versucht, es auf verschiedene Arten zu dekodieren, aber es hat mir nie etwas zurückgegeben, das auch nur annähernd wie das richtige Ergebnis aussah. Das Beste, was ich bekam, war die „ISO-8859-1“-Dekodierung, die zu
\x7fððñ\x7fk\x7fððððñðòôù\x7fk\x7fððððððððð...
Ich bin dankbar für Haben Sie Ratschläge, warum die .bat-Datei anders funktionierte oder wie man sie in Python richtig dekodiert?
Vielen Dank!
Ich rufe eine Datei über FTP auf zwei Arten von einem NAS ab:
[list]
[*]mit einer .bat-Datei, in der ich Folgendes habe:
a) ftp -s:C:\TEMP\runTheDownload.txt (Das Skript ruft den Code aus der TXT-Datei auf)
b) Die .txt-Datei enthält Folgendes:
[code]open some.address.eu
username
password
ascii
quote "site SBDataconn=ANOTHER.ADD.RESS.HERE
get 'THE.NAS.LOCATION.OF.THE.FILE' C:\TEMP\output.txt
[/code]
[*]Ich habe einen Python-Code mit den obigen Eingaben, in dem ich ftplib und den folgenden Code verwende:
[code]with FTP(ftp_server) as ftp:
ftp.login(ftp_user, ftp_password)
print("Connected to FTP server.")
# Set transfer mode to ASCII
ftp.sendcmd("TYPE A")
# print("Switched to ASCII mode.")
# Execute the custom FTP command (quote)
ftp.sendcmd('SITE SBDataconn=ANOTHER.ADD.RESS.HERE')
print("Custom SITE command executed.")
# Download the file
with open(local_file, 'wb') as file_obj:
# Write info to buffer
ftp.retrbinary(
f"RETR {remote_file}", file_obj.write)
[/code]
[/list]
Wenn ich mir beim ersten Ansatz die Datei „output.txt“ ansehe, erhalte ich vollkommen gute Daten wie 001, abc, 2013230..., die Python-Ausgabe gibt mir jedoch codierte Rückgaben wie:
\x7f\xf0\xf0\xf1\x7fk\x7f\xf0\xf0\xf0\xf0\xf1\xf0\xf2\xf4\xf9\x7fk\x7f\xf0\xf0\xf 0\xf0\xf0\xf0\xf0\xf0\xf0\x7fk\x7fN\xf0\x7fk\x7f\xf0\xf4\x7fk\x7f\xf0\xf0\x7fk\x7f@@@@@ @@@@@\x7fk\x7f\xd6\xd7\xc3\xe4\xe2\xc5\xd9@\x7fk\x7f\x81\xa4\xa3\x96\x94\x81\xa3\x89\xa 2\x83\x88\x85@\xc5\x89\x95\xa2\xa3\xa4\x86\xa4\x95\x87@`@\xf1K\xf7K\xf2@@@@@@@@@
Ich frage mich, was mir in meinem Python-Code fehlt, um ihn so gut umzuwandeln, wie es mit der .bat-Datei gemacht wird.
Ich habe versucht, es auf verschiedene Arten zu dekodieren, aber es hat mir nie etwas zurückgegeben, das auch nur annähernd wie das richtige Ergebnis aussah. Das Beste, was ich bekam, war die „ISO-8859-1“-Dekodierung, die zu
\x7fððñ\x7fk\x7fððððñðòôù\x7fk\x7fððððððððð...
Ich bin dankbar für Haben Sie Ratschläge, warum die .bat-Datei anders funktionierte oder wie man sie in Python richtig dekodiert?
Vielen Dank!