मैं एफ़टीपी पर फ़ाइल अपलोड करने के लिए एक स्क्रिप्ट बनाना चाहूंगा।
लॉगिन सिस्टम कैसे काम करेगा? मैं कुछ इस तरह की तलाश में हूँ:
ftp.login=(mylogin)
ftp.pass=(mypass)
और क्रेडेंशियल्स में कोई अन्य संकेत।
मैं एफ़टीपी पर फ़ाइल अपलोड करने के लिए एक स्क्रिप्ट बनाना चाहूंगा।
लॉगिन सिस्टम कैसे काम करेगा? मैं कुछ इस तरह की तलाश में हूँ:
ftp.login=(mylogin)
ftp.pass=(mypass)
और क्रेडेंशियल्स में कोई अन्य संकेत।
जवाबों:
उपयोग करें ftplib
, आप इसे इस तरह लिख सकते हैं:
import ftplib
session = ftplib.FTP('server.address.com','USERNAME','PASSWORD')
file = open('kitten.jpg','rb') # file to send
session.storbinary('STOR kitten.jpg', file) # send the file
file.close() # close file and FTP
session.quit()
का प्रयोग करें ftplib.FTP_TLS
बजाय यदि आप FTP होस्ट टीएलएस की आवश्यकता है।
इसे पुनः प्राप्त करने के लिए, आप इसका उपयोग कर सकते हैं urllib.retrieve
:
import urllib
urllib.urlretrieve('ftp://server/path/to/file', 'file')
संपादित करें :
वर्तमान निर्देशिका का पता लगाने के लिए, उपयोग करें FTP.pwd()
:
FTP.pwd (): सर्वर पर वर्तमान निर्देशिका का पथनाम लौटाएँ।
निर्देशिका को बदलने के लिए, उपयोग करें FTP.cwd(pathname)
:
FTP.cwd (पथनाम): सर्वर पर वर्तमान निर्देशिका सेट करें।
ftplib अब संदर्भ प्रबंधकों का समर्थन करता है इसलिए मुझे लगता है कि इसे और भी आसान बनाया जा सकता है
from ftplib import FTP
from pathlib import Path
file_path = Path('kitten.jpg')
with FTP('server.address.com', 'USER', 'PWD') as ftp, open(file_path, 'rb') as file:
ftp.storbinary(f'STOR {file_path.name}', file)
फ़ाइल या सत्र को बंद करने की आवश्यकता नहीं है
आप सबसे अधिक संभावना पायथन के लिए ftplib मॉड्यूल का उपयोग करना चाहते हैं
import ftplib
ftp = ftplib.FTP()
host = "ftp.site.uk"
port = 21
ftp.connect(host, port)
print (ftp.getwelcome())
try:
print ("Logging in...")
ftp.login("yourusername", "yourpassword")
except:
"failed to login"
यह आपको एक FTP सर्वर में लॉग करता है। वहां से आप जो करते हैं वह आपके ऊपर है। आपका प्रश्न किसी भी अन्य ऑपरेशन को इंगित नहीं करता है जो वास्तव में करने की आवश्यकता है।
इसे इस्तेमाल करे:
#!/usr/bin/env python
import os
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username="username", password="password")
sftp = ssh.open_sftp()
localpath = '/home/e100075/python/ss.txt'
remotepath = '/home/developers/screenshots/ss.txt'
sftp.put(localpath, remotepath)
sftp.close()
ssh.close()
SSHException: Error reading SSH protocol banner" when using ProxyCommand
इस मार्ग को ftp पर जाते समय त्रुटि मिलती है ।
मैंने यहाँ एक समान प्रश्न का उत्तर दिया
IMHO, यदि आपका एफ़टीपी सर्वर फैब्रिक के साथ संवाद करने में सक्षम है तो कृपया हमें फ़ैब्रिक दें। यह कच्चा करने से कहीं बेहतर है ftp
।
मेरे पास एक एफ़टीपी खाता है dotgeek.com
इसलिए मुझे यकीन नहीं है कि यह अन्य एफ़टीपी खातों के लिए काम करेगा।
#!/usr/bin/python
from fabric.api import run, env, sudo, put
env.user = 'username'
env.hosts = ['ftp_host_name',] # such as ftp.google.com
def copy():
# assuming i have wong_8066.zip in the same directory as this script
put('wong_8066.zip', '/www/public/wong_8066.zip')
फ़ाइल को सहेजें fabfile.py
और fab copy
स्थानीय रूप से चलाएं ।
yeukhon@yeukhon-P5E-VM-DO:~$ fab copy2
[1.ai] Executing task 'copy2'
[1.ai] Login password:
[1.ai] put: wong_8066.zip -> /www/public/wong_8066.zip
Done.
Disconnecting from 1.ai... done.
एक बार फिर, यदि आप हर समय पासवर्ड नहीं डालना चाहते हैं, तो बस जोड़ें
env.password = 'my_password'
एन्क्रिप्शन त्रुटि प्राप्त करने से बचने के लिए आप नीचे दिए गए आदेशों को भी आज़मा सकते हैं
ftp = ftplib.FTP_TLS("ftps.dummy.com")
ftp.login("username", "password")
ftp.prot_p()
file = open("filename", "rb")
ftp.storbinary("STOR filename", file)
file.close()
ftp.close()
ftp.prot_p () सुनिश्चित करें कि आपके कनेक्शन एन्क्रिप्टेड हैं
आप नीचे दिए गए फ़ंक्शन का उपयोग कर सकते हैं। मैंने अभी तक इसका परीक्षण नहीं किया है, लेकिन इसे ठीक काम करना चाहिए। याद रखें कि गंतव्य एक निर्देशिका पथ है जहाँ स्रोत पूर्ण फ़ाइल पथ है।
import ftplib
import os
def uploadFileFTP(sourceFilePath, destinationDirectory, server, username, password):
myFTP = ftplib.FTP(server, username, password)
if destinationDirectory in [name for name, data in list(remote.mlsd())]:
print "Destination Directory does not exist. Creating it first"
myFTP.mkd(destinationDirectory)
# Changing Working Directory
myFTP.cwd(destinationDirectory)
if os.path.isfile(sourceFilePath):
fh = open(sourceFilePath, 'rb')
myFTP.storbinary('STOR %s' % f, fh)
fh.close()
else:
print "Source File does not exist"
myFTP.storbinary('STOR %s' % f, fh)
क्या है % f
?
print ftp.pwd()
जिस वर्तमान पथ पर हैं, उसका उपयोग कर सकते हैं।