我已经得到以下代码错误,我不确定原因。
from datetime import datetime
import os
Right_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print('Right now is ' + Right_now)
filename = 'sysdate.txt'
with open(filename,"r") as fin:
last_date = fin.read()
my_date = datetime.strptime(str(last_date), '%Y-%m-%d %H:%M:%S')
fin.close()
该文件包含以下日期格式 2018-01-18 11:01:54
但是我收到以下错误消息..
Right now is 2018-01-18 11:16:13
Traceback (most recent call last):
File "test1.py", line 11, in <module>
my_date = datetime.strptime(str(last_date), '%Y-%m-%d %H:%M:%S')
File "/usr/lib64/python2.7/_strptime.py", line 328, in _strptime
data_string[found.end():])
ValueError: unconverted data remains:
Python版本是2.7.5
答案 0 :(得分:0)
假设您只对最后一个日期感兴趣,如果有多个,您需要修改您的程序以考虑最后返回的空字符串:
Sub CreatePDF()
ActiveWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
Sheets("Sheet1").Activate
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="C:\temp.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Sheets("Sheet1").Select
Range("A1").Select
End Sub
使用with open(filename,"r") as fin:
last_date = fin.read().split('\n')[-2]
my_date = datetime.strptime(last_date, '%Y-%m-%d %H:%M:%S')
将立即读取整个文件。最后一个元素是到达文件末尾时返回的空字符串。您可以在this帖子和documentation中详细了解相关信息。
您更正的程序会读取文件并根据换行符将其拆分为行,然后选择前一个元素作为目标日期。其余命令成功运行。
您最后不需要.read()
- .close()
会自动关闭文件,
中从Python 2.5开始,您可以避免必须显式调用此方法 如果你使用with语句。例如,以下代码将 退出with块时自动关闭f:
答案 1 :(得分:0)
你的问题是换行符。
我编写了一个非常相似的程序,从文本文件中的每一行读取一个日期,并得到相同的错误消息。
我通过使用 rstrip() 以类似的方式删除换行符来解决它:
with open(filename,"r") as fin:
last_date = fin.read()
my_date = datetime.strptime(str.rstrip(last_date), '%Y-%m-%d %H:%M:%S')
即使手册没有明确说明rstrip()也会删除换行符。