使用Python的文件共享应用


蓝牙和WhatsApp通常用于在设备之间发送文件。虽然这两种方法都非常方便,但是只需一个简单的二维码就能访问其他设备的文档,这令人感到非常有趣。尤其是在几分钟内使用Python就能实现这一点。

借助Python结合计算机网络的概念,我们可以创建一个简单的Python应用程序来在不同设备之间共享文档。此应用程序将同时提供IP地址和二维码。根据需要,您可以扫描代码或在您选择的设备中输入IP地址,主机将提供对其所有文档的访问权限。此应用程序使用了各种Python模块,例如HTTPServer、socketserver、webbrowser、pyqrcode、OS模块和PyPNG。这些模块有助于处理各种端口、套接字、URL和网页协议。

示例

在此示例中,我们将使用TCP端口8010来设置两个设备之间的通信链路。这是通过首先设置我们希望共享其文件的目录,然后查找系统的IP地址来完成的。此外,我们将此IP地址转换为二维码,然后将其托管在Web浏览器中。然后,我们将使用我们选择的设备(在本例中为手机)扫描代码,从而从手机访问系统的所有文件。

这些是我们将在代码中使用的模块和库:

  • Http.server − 对于任何通过Web浏览器进行的传输,都需要一个HTTP套接字。Http.server模块有助于创建此套接字并侦听传递到此套接字的内容。

  • Socket和socketserver − 这些模块用于创建和管理网络连接。socket模块提供对操作系统上存在的网络套接字的访问,而socketserver模块有助于创建网络服务器。

  • Webbrowser − 此模块有助于设计所有文档的简单网页视图。

  • Pyqrcode − 此模块有助于创建二维码。

  • Png − 由于我们使用的是将在浏览器中显示为图像的二维码,因此png模块将有助于使用Python读取和写入图像文件。

  • OS − OS模块有助于与操作系统交互,并允许处理文件、目录、环境变量、路径和进程等。

此外,我们使用TCP端口8010是因为它使用预定义的协议,有助于在各种类型的应用程序之间进行通信。

算法

  • 步骤1 − 导入所有必需的库和模块。

  • 步骤2 − 分配端口号和系统名称。

  • 步骤3 − 根据需要更改路径。

  • 步骤4 − 创建一个处理程序以从指定的目录提供文件。

  • 步骤5 − 创建HTTP请求。

  • 步骤6 − 查找PC的IP地址,并使用pyqrcode模块将其转换为二维码。

  • 步骤7 − 在浏览器中显示二维码。

  • 步骤8 − 创建HTTP请求以在两个设备之间提供文件夹。

#import modules 

#to work with HTTP Web servers
import http.server

#to access BSD socket interface
import socket

#to work with network servers
import socketserver

#to display the documents to user on other device as a web page
import webbrowser

#to generate a qr code
import pyqrcode
from pyqrcode import QRCode

#to convert the code in png format
import png

#to access all directories and os
import os

#assign port
PORT = 8010

#to find the name of user’s system
os.environ['USERPROFILE']

#changing the path 
desktop = os.path.join(os.path.join(os.environ['USERPROFILE']))
                      
#handler to serve files from appropriate directory
class DesktopHandler(http.server.SimpleHTTPRequestHandler):
   def translate_path(self, path):
      #to get the absolute path
      root_dir = os.path.abspath(desktop)
      #to join the root directory and the given path
      path = os.path.normpath(path)
      words = path.split('/')
      words = filter(None, words)
      path = root_dir
      for word in words:
         if os.path.dirname(word) or word in (os.curdir, os.pardir):
            continue
         path = os.path.join(path, word)
      return path


#create http request
Handler = DesktopHandler
hostname = socket.gethostname()


#to find the IP address of pc
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
IP = "http://" + s.getsockname()[0] + ":" + str(PORT)
link = IP

#convert the IP address into a Qrcode using pyqrcode
url = pyqrcode.create(link)
url.svg("myqr.svg", scale=8)
webbrowser.open('myqr.svg')

#create http request and serve folders between client and server
with socketserver.TCPServer(("", PORT), Handler) as httpd:
   print("serving at port", PORT)
   print("Type this in your Browser", IP)
   print("or Use the QRCode")
   httpd.serve_forever()

输出

serving at port 8010
Type this in your Browser http://192.168.30:178:8010
or Use the QRCode

扫描二维码后,您将看到系统中的所有文件现在都可以在其他设备上访问。这是一个屏幕截图。

您可以看到,我们现在可以访问我们选择的目录中的所有文件。

结论

使用Python创建文件共享应用程序最简单的方法是使用二维码。这种方法的唯一缺点是,在设置目录路径或打开通信端口时可能会遇到错误,因为它只能打开一次。但是,考虑到所需的时间,即使与WhatsApp Web相比,这种方法也更简单。其他此类应用程序包括在客户端和服务器机器上使用不同的代码来建立连接,从而避免使用手机。

更新于:2023年8月23日

浏览量:1000+

启动您的职业生涯

完成课程获得认证

开始
广告