使用变量和时间戳的输出编写文件

时间:2015-07-22 23:25:51

标签: python datetime time

我正在尝试创建一个简单的输出文件,其中包含时间戳(出现刺激时)和刺激的颜色。

我能够只用颜色编写一个文件,但每当我尝试创建一个包含时间戳和颜色的文件时,我都会收到错误。 “TypeError:无法连接'str'和'datetime.datetime'对象”

以下代码:

from psychopy import visual, core
import random
import time
import datetime
import time 
from time import strftime


f = open('2015-07-15-Random-Output.txt', 'w')
print f

file = open ('2015-07-15-Random-Output.txt', 'w')


win = visual.Window([800,800],monitor="testmonitor", units="deg")

HolaMundo = "Hola Mundo"

for frameN in range(10):
    MyColor = random.choice(['red','blue','green','pink','purple','orange','yellow','black','white'])
    time = datetime.datetime.now()
    print time
    data = MyColor + str(time)
    msg = visual.TextStim(win, text=HolaMundo,pos=[-4,0],color=MyColor)
    msg.draw()
    win.flip()
    core.wait(.1)
    datetime.datetime.now
    file.write(time + '\n')


file.close()

5 个答案:

答案 0 :(得分:1)

datetime.datetime.now仅引用该方法,但不会调用它。它应该是str(datetime.datetime.now())或:

time = datetime.datetime.now()
time.strftime('%m/%d/%Y') #formats the date as a string

有关格式here

的更多信息

引用上一个问题here

答案 1 :(得分:0)

我认为这是你的问题:

file.write(time + '\n')

time变量不是字符串。你想要的是这个:

file.write(data+ '\n')

答案 2 :(得分:0)

Datetime是一个对象,它不会自动格式化。你需要使用strftime [1]才能让它看起来像你喜欢的样子。根据您的文件名,您可以通过以下方式在年 - 月 - 日进行设置:

timeString = time.strftime('%Y-%d-%m')

如果您想要自纪元以来的秒数,那么

timeString = time.strftime('%s')

然后你应该在你写入文件时打印timeString而不是时间:

file.write(timeString + '\n')

[1] - https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

答案 3 :(得分:0)

MyColor = random.choice(['red','blue','green','pink','purple','orange','yellow','black','white'])
time = str(datetime.datetime.now())
data = MyColor + "     " + time
msg = visual.TextStim(win, text=Phrase,pos=[0,4],color=MyColor)
msg.draw()
win.flip()
core.wait(.1)
file.write(data + '\n')

谢谢!感谢帮助,我想我已经明白了。

答案 4 :(得分:0)

要连接它们,你必须执行datetime对象的str()。也:

f = open('2015-07-15-Random-Output.txt', 'w')
print f

file = open ('2015-07-15-Random-Output.txt', 'w')

如果你只是删除file = open line而不是这样做,这有点多余和简单:

from psychopy import visual, core
import random
import time
import datetime
import time 
from time import strftime


with open('2015-07-15-Random-Output.txt', 'w') as f:
  print f
  win = visual.Window([800,800],monitor="testmonitor", units="deg")
  HolaMundo = "Hola Mundo"

  for frameN in range(10):
    MyColor =   random.choice(['red','blue','green','pink','purple','orange','yellow','black','white'])
    time = datetime.datetime.now()
    print time
    data = MyColor + str(time)
    msg = visual.TextStim(win, text=HolaMundo,pos=[-4,0],color=MyColor)
    msg.draw()
    win.flip()
    core.wait(.1)
    datetime.datetime.now
    f.write(time + '\n')

f.close()