Nie wiem, czy na to odpowiedziano wcześniej (przeglądałem, ale nie mogłem znaleźć), ale jak mogę wysłać plik (.exe, jeśli to możliwe) przez sieć do innego komputera podłączonego do sieci ? Próbowałem gniazda, ale mogłem tylko wysyłać ciągi i próbowałem nauczyć się ftplib, ale nie rozumiem go w ogóle lub jeśli ftp jest nawet tym, czego szukam, więc jestem w całkowitym zawieszeniu. Dowolne wejście jest doceniane (tym bardziej, że ktoś może wyjaśnić FTP, czy jest to podobne gniazdo? Wszystkie przykłady, które widziałem, nie mają programu serwera, z którym klient może się połączyć.)Jak przenieść plik między dwoma podłączonymi komputerami w pythonie?
Odpowiedz
Niektóre uproszczony przykład kodu dla strony wysyłającej:
if os.path.exists(df):
with open(df, 'rb') as f:
packet = f.read(blocksize)
while packet != '':
conn.send(packet)
packet = f.read(blocksize)
Gdzie:
df = 'path/to/data/file'
blocksize = 8192 # or some other size packet you want to transmit.
# Powers of 2 are good.
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ok dzięki, więc czy FTP nie jest potrzebny? Wciąż nie do końca rozumiem, do czego służy – Baboon
@Baboon - FTP jest wyspecjalizowanym protokołem do transferu plików, tak. Zawiera szereg udogodnień, z którymi zgadzają się klienci/serwery - potwierdzenia, aktualizacje statusu, ponowienia, współbieżność itp. Możesz przeczytać całą specyfikację tego RFC: https://www.ietf.org/rfc/rfc959.txt.Jednak FTP nie jest jedynym sposobem na przesłanie pliku, a korzystanie z gniazd do transmisji danych jest zdecydowanie możliwe. Zwykle Serwer i Klient muszą uzgodnić słownictwo/dialog i wiedzieć, w jaki sposób uzgodnić, kiedy plik został w całości przesłany. –
A. Używam SimpleHTTPServer
za to czasami:
python -m SimpleHTTPServer
... który służyłby pliki w bieżącym katalogu na porcie 8000. Otwórz przeglądarkę internetową na innym komputerze i pobrać co chcesz.
znać adres IP komputera, można użyć (w Ubuntu) ifconfig, np:
$ ifconfig
enp0s31f6 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:10.0.0.3 Bcast:10.0.0.255 Mask:255.255.255.0
Następnie w drugim komputerze, wysłać do przeglądarki: http://10.0.0.3:8000.
B. Jeśli masz włączone SSH, możesz użyć paramiko do połączenia i przesyłania SFTP, co chcesz.
+1 dla dwóch cennych elementów wiedzy, które właśnie dodałeś do mojego repertuaru! – Thanatos
Zapoznaj się z paramiko. Może zrobić scp i sftp.
ZeroMQ pomaga zastąpić gniazd.
Możesz wysłać cały plik w jednym poleceniu.
A ZMQ „partia” mogą być napisane we wszystkich ważnych języku i dla danego ZMQ-powered oprogramowania, to nie robi sprawy, co drugi koniec napisane w
z ich strony.
Daje gniazda, które przenoszą całe wiadomości między różnymi transportami, takimi jak: proces, inter-proces, TCP i multiemisja. Możesz podłączyć gniazda N-to-N za pomocą wzorców takich jak fanout, pub-sub, zadanie dystrybucji i request-reply.
- 1. Jak mogę wysłać ciągi między dwoma komputerami?
- 2. Jak przenieść plik w Pythonie
- 3. Jak zapewnić synchronizację przestrzeni wokół zaćmienia między dwoma komputerami?
- 4. Python: wysyłanie danych między dwoma komputerami za pośrednictwem gniazd
- 5. Komunikacja między dwoma komputerami za pomocą gniazda Pythona
- 6. Wysyłanie wiadomości między komputerami
- 7. Migracja virtualenv i Github między komputerami
- 8. Przenieść plik między urządzeniami z systemem Android?
- 9. kontrole .Net zmieniając wielkość między komputerami
- 10. Przenieść Konstruktora, przenieść wektor między dwoma obiektami za pomocą std :: move?
- 11. W Pythonie, dowiedzieć się wiele różnic między dwoma uporządkowanych list
- 12. Rekursywne dotknięcie, aby naprawić synchronizację między komputerami
- 13. Synchronizacja repozytorium git między komputerami podczas przemieszczania się?
- 14. Jak przenieść plik do niepustego katalogu?
- 15. Jak przenieść plik PERLBREW_ROOT do innego katalogu?
- 16. Połączenie między dwoma użytkownikami
- 17. Komunikacja między dwoma wątkami
- 18. przekazać ciąg między dwoma Wi-Fi bezpośrednio podłączony użytkownik w Android przy użyciu wifi direct?
- 19. Znajdź różnicę między dwoma oddziałami w Git
- 20. Korelacja między dwoma wektorami?
- 21. Jak wstawić przycisk między dwoma układami
- 22. Jak wyodrębnić linie między dwoma ogranicznikami linii w Perlu?
- 23. Miejsca pracy synchronizacji Eclipse/perspektywy/preferencje między komputerami
- 24. Jak znaleźć podłańcuch między dwoma ciągami?
- 25. Jak mogę obliczyć różnicę między dwoma ciągami?
- 26. Jak uzyskać różnicę między dwoma DataTables
- 27. Jak zastąpić podciąg między dwoma indeksami
- 28. Jak obliczyć różnicę między dwoma Java java.sql.Timestamps?
- 29. Jak dodać spację między dwoma wyjściami?
- 30. Jak wykryć konflikt między dwoma repozytoriami git.
Z pewnością można to zrobić ze zwykłymi gniazdami. Co próbowałeś? –
Powinieneś po prostu użyć 'scp' lub nawet' rsync' – wim