读取文件(.txt,.csv..xls)并将它们分配给python脚本中的相应变量

时间:2015-11-19 05:53:45

标签: python file file-io

我有一个文件(mail.txt),其内容类似于

 emailfrom = 'satya@gmail.com'
 emailto = 'abc@hcl.com','xyz@hcl.com','accc@infy.com'
 filepath = 'D:\A_2.csv'
 subject = 'sells report for xyz'
 body = 'hi axx,find the attached file of sells.'

我正在运行一个脚本来发送邮件,并在我的脚本中发送我的msg变量   发送电子邮件,电子邮件,文件路径,主题,正文。

那么我怎样才能读取该文本文件并从那里读取值并将变量分配给我的脚本变量。

请建议。

2 个答案:

答案 0 :(得分:1)

使用字典来保存信息,ast.literal_eval()正确评估您的字符串和tuple(否则您最终会得到额外的'):

import ast
with open('mail.txt') as f:
    d = {k:ast.literal_eval(v) for k,v in (line.strip().split(' = ') for line in f)}

然后您将拥有一个包含每个值的字典:

>>> print(*d.items(), sep='\n')
('emailfrom', 'satya@gmail.com')
('emailto', ('abc@hcl.com', 'xyz@hcl.com', 'accc@infy.com'))
('filepath', 'D:\\A_2.csv')
('body', 'hi axx,find the attached file of sells.')
('subject', 'sells report for xyz')

按照您的预期访问值:

>>> d['subject']
'sells report for xyz'

答案 1 :(得分:0)

   objFile = open("youfile.txt", "r")


   lsFileContents = objFile.readlines()
   strEmailFrom = lsFileContents[0].strip().split("=")[1].strip()
   strEmailTo = lsFileContents[1].strip().split("=")[1].strip()  
   strFilePath = lsFileContents[2].strip().split("=")[1].strip()
   strBody = lsFileContents[4].strip().split("=")[1].strip()
   strSubject = lsFileContents[3].strip().split("=")[1].strip()

   objFile.close()