使用 ftplib 打开 FTP 中的 json 文件
Open a json file in a FTP using ftplib
在我们的项目中,我们需要使用 ftplib 模块。我正在使用 ftplib 读取 FTP 中 json 文件的内容,但它显示错误 [Errno 2] No such file or directory: 'test.json'
这是简单的代码:
from ftplib import FTP
networkconnect = 'ftp.test123.com'
usern = '123'
pwconnect = 'test123'
ftp = FTP(networkconnect, usern, pwconnect)
ftp.cwd('/testpath')
with open('test.json', 'r') as j:
json_data = json.load(j)
我尝试使用 ftputil 等其他模块,它会打开 json 文件
例如:
import ftputil
networkconnect = 'ftp.test123.com'
usern = '123'
pwconnect = 'test123'
test_host = ftputil.FTPHost(networkconnect, usern, pwconnect)
test_host.chdir('/testpath')
with test_host.open('test.json', 'r') as j:
json_data = json.load(j)
但是由于我需要使用 ftplib,我想知道是否有任何解决方法可以使用 [=] 在 ftp 中打开 json 文件27=]库?
提前谢谢大家
试试这个方法:先下载文件到本地,然后尝试打开它。
currentDirectory = os.getcwd()
save_directory = os.path.join(currentDirectory, 'file.json')
def download():
try:
ftp = ftplib.FTP('host', 'login', 'pass')
files = ftp.nlst()
filename = files[0] # get first file
ftp.retrbinary("RETR " + filename, open(save_directory, 'wb').write)
ftp.close()
return True
except Exception as e:
print(e)
return False
if download():
with open(save_directory, 'r') as j:
json_data = json.load(j)
我在 Raspberry Pi 2B 上有这个 运行。它不接触本地文件系统。它是 Python 2.x,我已将其简化为基础知识。远程文件内容被复制到本地 RAM,因此请注意源文件大小的内存限制。它在我的 23K 文件上工作得很好。只让它在 FTP 上工作(不是 SFTP)。
# Comments: Read JSON stream from FTP.
import json
import ftplib, StringIO
if __name__ == '__main__':
ftpsite = 'ftp.yoursite.com'
ftplogin = 'yourlogin'
ftppsw = 'yourpassword'
ftpfilename = 'yourfile.json'
print('ftp {ftplogin}@{ftpsite}'.format(ftpsite=ftpsite,ftplogin=ftplogin))
print('retr {ftpfilename}'.format(ftpfilename=ftpfilename))
ftp=ftplib.FTP(ftpsite,ftplogin,ftppsw)
r = StringIO.StringIO()
ftp.retrbinary('retr ' + ftpfilename,r.write)
response = r.getvalue()
r.close()
ftp.quit()
parsed_json = json.loads(response)
print parsed_json
在我们的项目中,我们需要使用 ftplib 模块。我正在使用 ftplib 读取 FTP 中 json 文件的内容,但它显示错误 [Errno 2] No such file or directory: 'test.json'
这是简单的代码:
from ftplib import FTP
networkconnect = 'ftp.test123.com'
usern = '123'
pwconnect = 'test123'
ftp = FTP(networkconnect, usern, pwconnect)
ftp.cwd('/testpath')
with open('test.json', 'r') as j:
json_data = json.load(j)
我尝试使用 ftputil 等其他模块,它会打开 json 文件
例如:
import ftputil
networkconnect = 'ftp.test123.com'
usern = '123'
pwconnect = 'test123'
test_host = ftputil.FTPHost(networkconnect, usern, pwconnect)
test_host.chdir('/testpath')
with test_host.open('test.json', 'r') as j:
json_data = json.load(j)
但是由于我需要使用 ftplib,我想知道是否有任何解决方法可以使用 [=] 在 ftp 中打开 json 文件27=]库?
提前谢谢大家
试试这个方法:先下载文件到本地,然后尝试打开它。
currentDirectory = os.getcwd()
save_directory = os.path.join(currentDirectory, 'file.json')
def download():
try:
ftp = ftplib.FTP('host', 'login', 'pass')
files = ftp.nlst()
filename = files[0] # get first file
ftp.retrbinary("RETR " + filename, open(save_directory, 'wb').write)
ftp.close()
return True
except Exception as e:
print(e)
return False
if download():
with open(save_directory, 'r') as j:
json_data = json.load(j)
我在 Raspberry Pi 2B 上有这个 运行。它不接触本地文件系统。它是 Python 2.x,我已将其简化为基础知识。远程文件内容被复制到本地 RAM,因此请注意源文件大小的内存限制。它在我的 23K 文件上工作得很好。只让它在 FTP 上工作(不是 SFTP)。
# Comments: Read JSON stream from FTP.
import json
import ftplib, StringIO
if __name__ == '__main__':
ftpsite = 'ftp.yoursite.com'
ftplogin = 'yourlogin'
ftppsw = 'yourpassword'
ftpfilename = 'yourfile.json'
print('ftp {ftplogin}@{ftpsite}'.format(ftpsite=ftpsite,ftplogin=ftplogin))
print('retr {ftpfilename}'.format(ftpfilename=ftpfilename))
ftp=ftplib.FTP(ftpsite,ftplogin,ftppsw)
r = StringIO.StringIO()
ftp.retrbinary('retr ' + ftpfilename,r.write)
response = r.getvalue()
r.close()
ftp.quit()
parsed_json = json.loads(response)
print parsed_json