上传到ftp服务器后的空json文件

问题描述 投票:0回答:1

我正在尝试使用json与python进行简单的服务器-客户端交互。但是现在我有一个问题,我的.json文件确实上传了,但是在服务器端却是空的。

你能帮我吗?

import json
import urllib.request
import os
import time
import ftplib
import fileinput
from ftplib import FTP

url = urllib.request.urlopen("http://freepoint.ml/banking-system-minecraft/data.json").read()
rawjson = url.decode("utf-8")

number = input("Bank number: ")

result = json.loads(url)

name = result[number]["name"]
salary = result[number]["salary"]

strsalary = str(salary)

newsalary = input("New salary: ")

os.system("wget http://freepoint.ml/banking-system-minecraft/data.json")

newtext = rawjson.replace(strsalary, newsalary)

textfile = open("data.json", "w")
textfile.write(newtext)


#domain name or server ip:
ftp = FTP('serv','usr','pswd')
ftp.cwd("/public_html/banking-system-minecraft/")
file=open('data.json', 'rb')
ftp.storbinary('STOR data.json', file)

编辑:这是客户端脚本,我想通过json与简单的网络服务器而非python服务器创建客户端服务器交互

python json ftp upload client-server
1个回答
0
投票

您编写文本文件的代码不会关闭它。因此,在您尝试读取文件进行上传时,文件可能尚未完全刷新到磁盘。

要正确关闭文件,最佳做法是使用with块:

with open("data.json", "w") as textfile:
    textfile.write(newtext)

尽管如果您仅使用文件作为临时存储要上传到FTP的数据/文本的方式,则根本不必使用物理文件。

例如,使用内存中类似文件的对象,例如StringIO(或StringIO:]

BytesIO
from io import StringIO

另请参阅ftp.storbinary('STOR data.json', StringIO(newtext))

© www.soinside.com 2019 - 2024. All rights reserved.