Итак, я пытался создать плагин, чтобы другой конец мог загрузить ссылки в текстовом файле на FTP-сервере, и я могу получить текущую версию на сервере и изменить ее, но когда я пытаюсь повторно загрузить его текстовый файл выглядит пустым. Я попытался использовать FTP.storline и FTP.storbinary, но оба результата дали один и тот же результат. Я поместил функцию печати в обратный вызов, чтобы увидеть, происходит ли что-то, чего не происходит. В любом случае, любая помощь по поводу того, почему я не могу отправить свой файл со всеми приложенными данными, будет превосходной: D!
-Clement
КОД:
def upload(link,ip,username,passwd):
present = False
connection = ftplib.FTP(ip)
connection.login(user=username,passwd=passwd)
items = connection.nlst()
for x in items:
if x == "list.txt":
present = True
break
if present == True:
username = os.getlogin()
print("Got login!")
locallist_dir = "/Users/" + username
locallist = locallist_dir + "/list.txt"
opened_llist_r = open(locallist, "rb")
opened_llist = open(locallist, "wt")
print("Opened file in", locallist)
connection.retrlines("RETR %s" % "list.txt", opened_llist.write)
print("Added lines from FTP")
opened_llist.write(link + " ")
print("Link:","'",link,"'","written!")
print(opened_llist," | ",opened_llist_r)
connection.storbinary("STOR %s" % "list.txt", opened_llist_r, 8192, print)
print("Re-uploaded!")
opened_llist.close()
opened_llist_r.close()
else:
print("Your current Connection does not have the list.txt file.")
connection.close()
print("Connection Closed.")
ОТВЕТИЛ:
Извините за глупый вопрос, как указал Вон Катон, у меня не должно быть двух открытых одновременно. Я исправил свой код, закрывая первое открытие файла, прежде чем я вызову следующий. Окончательный код выглядит так:
def upload(link,ip,username,passwd):
present = False
connection = ftplib.FTP(ip)
connection.login(user=username,passwd=passwd)
items = connection.nlst()
for x in items:
if x == "list.txt":
present = True
break
if present == True:
username = os.getlogin()
print("Got login!")
locallist_dir = "/Users/" + username
locallist = locallist_dir + "/list.txt"
opened_llist = open(locallist, "wt")
print("Opened file in", locallist)
connection.retrlines("RETR %s" % "list.txt", opened_llist.write)
print("Added lines from FTP")
opened_llist.write(link + " ")
print("Link:","'",link,"'","written!")
print(opened_llist)
opened_llist.close()
opened_llist_r = open(locallist, "rb")
connection.storbinary("STOR %s" % "list.txt", opened_llist_r, 8192, print)
print("Re-uploaded!")
opened_llist_r.close()
else:
print("Your current Connection does not have the list.txt file.")
connection.close()
print("Connection Closed.")