gpt4 book ai didi

python - 在Python中从客户端发送不同的文件到服务器

转载 作者:行者123 更新时间:2023-12-01 05:16:10 25 4
gpt4 key购买 nike

我正在尝试使用 python 将文件从客户端发送到服务器。它正在发送,但问题是我没有得到与实际相同的文件名。 假设文件名为File1.txt。当我将其发送到服务器时,我收到的文件为 file_.txt。我为此编写的代码是:

客户端代码

import socket, os, shutil
from stat import ST_SIZE
HOST=raw_input("Please enter IP-address : ")

PORT=int(raw_input("Please enter PORT Number : "))
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST,PORT))
if s.recv(8)!='READY':
raw_input('Unable to connect \n\n Press any key to exit ...')
s.close()
exit()
path=raw_input("Please enter the complete PATH of your file : ")

f=open(path,'rb')
fsize=os.stat(f.name)[ST_SIZE]


s.sendall(str(fsize).zfill(8))
sfile = s.makefile("wb")
shutil.copyfileobj(f, sfile)
sfile.close()
s.close()
f.close()

服务器代码

import socket
import shutil
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
HOST = ''
PORT = 31400
s.bind((HOST, PORT))
s.listen(3)
conn, addr = s.accept()
print 'conn at address',addr
conn.sendall('READY')
i=1
f = open(r'file_'+ str(i)+".txt",'wb')
i=i+1
fsize=int(conn.recv(8))
print 'File size',fsize
sfile = conn.makefile("rb")
shutil.copyfileobj(sfile, f)
sfile.close()

f.write(conn.recv(fsize))
f.close()
conn.close()
s.close()

如何获得相同的文件名...如果我必须接收任何类型的文件(如 .pdf、.txt、.jpeg 等)怎么办?请帮助我,我是Python新手。

最佳答案

首先,您在服务器端没有收到 file_.txt 文件,您打开一个名为 file_.txt 的新文件,然后将服务器端收到的内容复制到新文件中创建了 file_.txt

我的解决方案是从文件中获取文件名并将其与内容一起发送。获取文件名示例:

import os
print os.path.splitext("path_to_file")[0]

关于python - 在Python中从客户端发送不同的文件到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23194950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com