1.python 发送邮件,附件中文命名,怎么破
不知道你是不是用的smtp来发的,我的发中文的附件没问题 #coding=utf-8'''Created on 2014-11-03@author: Neo'''import smtplibfrom email.mime.text import MIMEText import email.mime.multipartfrom email.MIMEMultipart import MIMEMultipartfrom email.MIMEBase import MIMEBasefrom email import Encoders#你自己修改下xxx的部分mailto_list = ['xxx@xxx.com']mail_host = "smtp.xxx.com" # 设置服务器mail_user = "xxxx" # 用户名mail_pass = "xxxxx" # 口令 mail_postfix = "xxxx.com" # 发件箱的后缀def send_mail(): me = "Hello" + "<" + mail_user + "@" + mail_postfix + ">" # 这里的hello可以任意设置,收到信后,将按照设置显示 content = 'Plz get the attachment!' msg = MIMEMultipart() body = MIMEText(content, _subtype='html', _charset='gb2312') # 创建一个实例,这里设置为html格式邮件 msg.attach(body) msg['Subject'] = "Test" # 设置主题 msg['From'] = me msg['To'] = ";".join(mailto_list) part = MIMEBase('application', 'octet-stream') # 读入文件内容并格式化,此处文件为当前目录下,也可指定目录 例如:open(r'/tmp/123.txt','rb') part.set_payload(open(u'test中文.txt','rb').read()) Encoders.encode_base64(part) ## 设置附件头 part.add_header('Content-Disposition', u'attachment; filename="test中文.txt"') msg.attach(part) try: s = smtplib.SMTP() s.connect(mail_host) # 连接smtp服务器 s.login(mail_user, mail_pass) # 登陆服务器 s.sendmail(me, mailto_list, msg.as_string()) # 发送邮件 s.close() print 'send mail sucess' return True except Exception, e: print str(e) return False send_mail()测试,发送ok。
2.python 发送邮件,附件中文命名,怎么破
不知道你是不是用的smtp来发的,我的发中文的附件没问题
#coding=utf-8
'''
Created on 2014-11-03
@author: Neo
'''
import smtplib
from email.mime.text import MIMEText
import email.mime.multipart
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email import Encoders
#你自己修改下xxx的部分
mailto_list = ['xxx@xxx.com']
mail_host = "smtp.xxx.com" # 设置服务器
mail_user = "xxxx" # 用户名
mail_pass = "xxxxx" # 口令
mail_postfix = "xxxx.com" # 发件箱的后缀
def send_mail():
me = "Hello" + "<" + mail_user + "@" + mail_postfix + ">;" # 这里的hello可以任意设置,收到信后,将按照设置显示
content = 'Plz get the attachment!'
msg = MIMEMultipart()
body = MIMEText(content, _subtype='html', _charset='gb2312') # 创建一个实例,这里设置为html格式邮件
msg.attach(body)
msg['Subject'] = "Test" # 设置主题
msg['From'] = me
msg['To'] = ";".join(mailto_list)
part = MIMEBase('application', 'octet-stream')
# 读入文件内容并格式化,此处文件为当前目录下,也可指定目录 例如:open(r'/tmp/123.txt','rb')
part.set_payload(open(u'test中文.txt','rb').read())
Encoders.encode_base64(part)
## 设置附件头
part.add_header('Content-Disposition', u'attachment; filename="test中文.txt"')
msg.attach(part)
try:
s = smtplib.SMTP()
s.connect(mail_host) # 连接smtp服务器
s.login(mail_user, mail_pass) # 登陆服务器
s.sendmail(me, mailto_list, msg.as_string()) # 发送邮件
s.close()
print 'send mail sucess'
return True
except Exception, e:
print str(e)
return False
send_mail()
测试,发送ok
3.python 列表写入文件时怎么变成中文
list1 = [u'\u96f7\u519b', u'\u9ece\u4e07\u5f3a', u'\u6d2a\u950b', u'\u5218\u5fb7', u'\u96f7\u519b', u'\u6797\u658c', u'\u5218\u82b9', u'\u8bb8\u8fbe\u6765', u'\u96f7\u519b', u'\u9ece\u4e07\u5f3a']
import codecs
f = codecs.open('list1.txt','w','utf-16')
for i in list1:
i = i + ' '
f.write(i,)
f.close()
4.如何用python整理附件
遍历所有的word文件,将word中关键的信息获取到并保存到excel中。
这里列下主要用到的模块:
import xlsxwriter
import subprocessimport os
import docximport sys
import re
xlsxwriter主要用来操作excel,xlsxwriter只能用来写,效率上比xlwt要高,数据量不多,用xlwt也ok。
subprocess主要用来调用命令行,因为docx模块无法解析doc的word文件,所以在解析前将doc的文件转换成docx文件。
os主要用于遍历文件夹获取文件。
docx主要用来解析word文档。
规范下文件名
首先我们先规范下文件名称,因为在使用subprocess.call调用命令时,空格,特殊符号之类的没办法转义导致报错,所以干脆在之前就清理掉这个潜在问题。
def remove_doc_special_tag():
for filename in os.listdir(path):
otherName = re.sub("[\s+\!\/_,$%^*(+\"\')]+|[+——()?【】“”!,。?、~@#¥%……&*()]+", "",filename)
os.rename(os.path.join(path,filename),os.path.join(path,otherName))
遍历文件
之后我们就可以开始正题,遍历每个文件进行解析:
path='/Users/cavin/Desktop/files'for filename in os.listdir(path):
具体逻辑。
这里碰到一个问题,首先是docx模块无法解析doc的word文档,由于又是使用的mac,所以也无法使用win32com模块,这个问题就比较尴尬,后来google发现可以通过命令将doc转换成docx。
这里注意下转换后的docx文件样式是丢失的,但这不影响我获取文本信息。
于是就有了这段代码,如果是doc的文件,优先转换成docx,待解析完之后再移除掉。
if filename.endswith('.doc'):
subprocess.call('textutil -convert docx {0}'.format(fullname),shell=True)
fullname=fullname[:-4]+".docx"
sheetModel= etl_word_files(fullname)#解析文本逻辑
subprocess.call('rm {0}'.format(fullname),shell=True) #移除转换的文件
解析word文件
接下来就是解析文件了,通过docx模块很容易实现,具体的解析逻辑就不贴了,就是遍历每一行,根据一些关键字,符号来截取数据(每个简历格式基本上差不多的)
doc = docx.Document(fullname)for para in doc.paragraphs: print(para.text)
具体解析逻辑。
填充excel
解析完的数据就可以直接填充excel了:
workbook = xlsxwriter.Workbook('report_list.xlsx')
worksheet = workbook.add_worksheet('list')
这里主要说下文档链接的填充,由于是要给其他人的,只要保证附件和excel在同一个文件夹下,采用相对路径的方式来实现,可以使用Excel的函数HYPERLINK:
worksheet.write(index,10, '=HYPERLINK(\"./'+filename+'\",\"附件\")')
5.用python怎么想一个文件中写入一个中文字符
例如:
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x, # 使用逗号结尾禁止换行
3.X: print(x, end=" ") # 使用空格代替换行
2.X: print # 输出新行
3.X: print() # 输出新行
2.X: print >>sys.stderr, "fatal error"
3.X: print("fatal error", file=sys.stderr)
2.X: print (x, y) # 输出repr((x, y))
3.X: print((x, y)) # 不同于print(x, y)!
6.请问,python打开中文字符文件,但显示不出中文怎么办
在python脚本的第一行加上#encoding=utf-8即可。
程序如下:
'''
Created on 2011-9-24
@author: legendxx
'''
#encoding=utf-8
f=file("test.txt","r")
print f.readline()
f.close
test.txt的内容只读取第一行,可以正常打印出来中文。
转载请注明出处编程代码网 » python附件中文(python发送邮件,附件中文命名,怎么破)