【问题标题】:Python reading mail accounts from txt filePython从txt文件中读取邮件账户
【发布时间】:2012-09-04 16:45:27
【问题描述】:

Python...

我有一个电子邮件地址文件,我需要创建一个脚本来将所有这些地址作为帐户导入,因此需要进行一些文本操作,我需要学习更多 Python。
文件格式为

user1@domain1.co.uk
user1@domain2.com
user2@domain4.com
user3@domain4.com

这基本上是一个用户名和一个域名,我需要创建一个帐户名(与用户相同)和域,以及电子邮件地址,以及一些其他日期/文件路径变量到导入文件中。一旦将用户和域分配给变量,就可以将它们打印到包含其他数据的文件中,以创建和导入列表/脚本。然后使用导入文件在一个新的邮件服务器上创建一个帐户列表,而不用一一遍历所有 128k。 所以。我如何一次读取文件的每一行(128,000 个条目),将每个用户名放入一个变量,然后将相应的域放入一个数组/元组/列表/字典?然后添加日期和其他一些文件路径的东西,用两个变量的电子邮件地址构建一个帐户名,并将输出附加到一个新文件,但在循环到下一行并重复之前每行执行此操作??

类似

的东西

制作输出文件
读取文件第 1 行并将用户和域放入变量
print user print domain print (otherstuff) print user@domain

将每个输出循环附加到同一个新文件(非原始文件)
循环到文件的下一行并重复
继续到 EOF(128k 行之后)
制作一个大文件来导入每个邮件帐户和详细信息,
(可能将输出文件拆分为更小的块以实现导入稳定性,每个文件 100 个条目?)

到目前为止我有

#!/usr/bin/python
import time;

input = open('/home/adam/Downloads/mailaccounts.txt', 'r')
fileoutput = open('/tmp/domaintest.txt', 'a' 'w')
sql1 = "INSERT INTO mailbox (username, password, name, storagebasedirectory, maildir, quota, domain, active)"
password = "88888888"
storage_base_directory = '/var/vmail/vmail1'
localtime = time.localtime(time.time())
localtime = localtime[0], ".", localtime[1], ".", localtime[2], ".", localtime[3], ".", localtime[4], ".", localtime[5]
localtime = ''.join(map(str, localtime))
for line in input:
    email = line
    user = line.split("@")[0]
    domain = line.split("@")[1]
    fileoutput.write(domain)

现在输出文件有字符了

^@d^@o^@m^@a^@i^@n^@1^@.^@c^@o.^@u^@k^@^M^@

从命令行测试时打印命令不会出现

domain1.co.uk

有人有什么想法吗?

【问题讨论】:

标签: python-2.7


【解决方案1】:

尝试用 'a+' 替换 'a' 'w' 选项,如下所示

fileoutput = open('/tmp/domaintest.txt', 'a+')

在此之后,您的脚本运行良好并获得了

domain1.co.uk 
domain2.com 
domain4.com 
domain4.com 

作为输出文件的输出

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    相关资源
    最近更新 更多