如何在文本文件中放置变量?

时间:2018-08-01 16:42:52

标签: python

因此,我试图在文本文件中插入一个变量,并按如下所示对其进行了定义:

 for filename in os.listdir("/home/gyanender/Desktop/s1d_gyanender"):
    if filename.endswith("_s1d_A.fits"):

      df = pd.DataFrame.from_dict(SN_dic,orient='index')
      df = df.mean()  
      out_name = s1d_header['OBJECT'] +'-' + s1d_header['DATE-OBS'] +'.ares'

      mine_opt =  '/home/gyanender/bin/ARES/mine.opt'
      file_opt=open(mine_opt,'w')
      file_opt.writelines(("specfits=filename","\n","fileout=out_name","\n","rejt=df"))
      file_opt.close()

所以最后我得到的是这样的东西,我得到了文本中变量的名称,但是我想要的是文本文件中那些变量的值,因为我必须将该文件作为输入另一个代码。

specfits='filename'
fileout='out_name'
rejt=df

filename = HARPS.2016-04-01T09:44:43.034_s1d_A.fits
out_name = Moon-2016-04-01T09:44:43.034.ares
rejt = 166.6 (As the values of df is 166.6)

所以我理想的文件应如下所示:

specfits='HARPS.2016-04-01T09:44:43.034_s1d_A.fits'
fileout='Moon-2016-04-01T09:44:43.034.ares'
rejt= 166.6

那么有人可以告诉我我在哪里犯错吗?

2 个答案:

答案 0 :(得分:1)

你在做

file_opt.writelines(("specfits=filename","\n","fileout=out_name","\n","rejt=df"))

请注意,您实际上是在将字符串"specfits=filename"打印到文件中。这里没有什么可以告诉代码,而不是您想要打印的代码。

我认为您想要的是用替代变量名称作为变量本身。这可以使用字符串格式来完成。假设python 3:

file_opt.writelines(("specfits={}".format(filename), "\n", "fileout={}".format(out_name), "\n", "rejt={}".format(df)))

在这里,字符串中的{}被替换为format()函数的参数。

如果您想在值周围使用单引号,则可以将其放在要打印的字符串中,例如"specfits='{}'"

答案 1 :(得分:0)

不要尝试发明轮子,选择一些存储方法并使用它。

此示例使用json:

organizations_with_user_role = Organization.joins(memberships: :role).
  where(memberships: {user_id: user.id}).where(roles: {name: 'User'})

然后阅读它会很容易!

import json
data = {   # create a dict with the data
   'specfits': specfits,
   'fileout':  fileout,
   'rejt':  rejt,
}

with open(mine_opt, 'w') as file_opt:
    json.dump(data, file_opt)