Python按照邮箱类型把不同的邮箱地址分类存储于不同的文件中

一、需求描述

假设我们有一个记事本文件,里面混乱地存储着不同类型的邮箱地址,每个邮箱地址占一行。如下图所示:

现在我们想把它整理一下,按照邮箱类型建立文件夹,在每个文件夹里建立一个txt文件,存储同类型的邮箱地址。如下图所示:

我们的原文件中有多少种类型的邮箱,就要相应地建立多少个文件夹

 

打开其中一个文件夹,能看到里面的txt文件

 

文件里面是这样的

 

 二、思路分析

  1. 我们要让程序自动识别邮箱类型。如果没建立过这种类型的文件夹,就建立,并在文件夹里建立文本文件,写入邮箱地址;已经建立过,就直接写入邮箱地址。
  2. 每个邮箱地址的结构,可以概括为“不定长字符串@邮箱类型.com”,我们要提取的内容就夹在@和.com之间,如果知道了@的索引和com前的那个.的索引,就能用切片法取出邮箱类型。
  3. 为了少占内存,我们一行一行地读取原文件,读到文件末尾就停止。

三、代码实现

import os

my_path='C:\\Users\\22768\\Desktop\\各种邮箱'
#我希望把所有邮箱类型的文件夹都建立在“各种邮箱”文件夹中
with open('C:\\Users\\22768\\Desktop\\mails.txt','r') as f:
#打开原文件
    while True:
        current_line=f.readline()
        #把读取到的一行内容赋值给变量current_line
        if current_line=='':
            break
            #当读取的内容是空字符串的时候,就代表读到文件末尾了,退出循环
        index_of_at=current_line.index('@')
        #获取@的索引
        current_email_type=current_line[index_of_at+1:-5]
        #提取邮箱类型,后面的.的索引我们就倒着数,别忘了在末尾还有一个换行符,也占一个字符
        files_list=os.listdir(my_path)
        #读取“各种邮箱”文件夹中的文件列表
        if current_email_type+'邮箱' not in files_list:
            os.mkdir(my_path+'\\'+current_email_type+'邮箱')
            #如果“各种邮箱”中还没有建立该类型邮箱的专属文件夹,就新建一个,已经有了就往下走
        with open(my_path+'\\'+current_email_type+'邮箱\\'+current_email_type+'邮箱.txt','a') as f1:
            f1.write(current_line)  
            #以'a'追加的方式打开专属文件夹中的txt文件(第一次执行这个操作时会自动建立一个txt文件)。把当前读取的这一行内容写入这个文件。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python3将文件从一个服务器传输到另一个服务器,可以使用paramiko模块实现。这个模块允许你使用SSH协议连接到远程服务器并执行文件传输操作。 以下是实现文件传输的简单示例代码: ``` import paramiko # 设置源和目标服务器的主机名、用户名和密码 src_hostname = 'source_server' src_username = 'source_username' src_password = 'source_password' dst_hostname = 'destination_server' dst_username = 'destination_username' dst_password = 'destination_password' # 创SSH客户端连接到源服务器 src_ssh = paramiko.SSHClient() src_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) src_ssh.connect(src_hostname, username=src_username, password=src_password) # 创SSH客户端连接到目标服务器 dst_ssh = paramiko.SSHClient() dst_ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) dst_ssh.connect(dst_hostname, username=dst_username, password=dst_password) # 创SFTP客户端连接到源服务器 src_sftp = src_ssh.open_sftp() # 在源服务器上打开要传输的文件 local_path = '/path/to/local/file' remote_path = '/path/to/remote/file' src_file = src_sftp.open(local_path, 'rb') # 在目标服务器上打开要传输的文件 dst_sftp = dst_ssh.open_sftp() dst_file = dst_sftp.open(remote_path, 'wb') # 从源服务器读取数据并写入目标服务器 dst_file.write(src_file.read()) # 关闭文件和SFTP连接 src_file.close() dst_file.close() src_sftp.close() dst_sftp.close() # 关闭SSH连接 src_ssh.close() dst_ssh.close() ``` 这个示例代码使用paramiko模块连接到源服务器和目标服务器,并使用SFTP协议进行文件传输。在示例代码,你需要将`src_hostname`、`src_username`、`src_password`、`dst_hostname`、`dst_username`和`dst_password`设置为源服务器和目标服务器的实际信息,将`local_path`和`remote_path`设置为要传输的文件的本地路径和远程路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值