我使用了从日志文件中读取的以下格式,使用的格式化程序与DateTime格式匹配。不知道为什么它仍然错误。 -ValueError:时间数据“'2018-01-01 10:00:00'”与格式'%Y-%m-%d%H:%M:%S'不匹配
f = open("log.txt", 'w')
f.write("UID, SID, LogTime\n")
f.write("1, 1, '2018-01-01 10:00:00'\n")
f.write("1, 1, '2018-01-01 10:30:00'\n")
f.write("1, 1, '2018-01-01 11:30:00'\n")
f.close()
x = open("log.txt", 'r')
print (x.read())
x.close()
import numpy as np
from datetime import datetime
a = open("log.txt", 'r+')
temp = None
header = a.readline()
for line in a:
line = line.strip()
columns = line.split(',')
print (columns)
UID = columns[0]
SID = columns[1]
print (columns[2])
LogTime = datetime.strptime(columns[2],"%Y-%m-%d %H:%M:%S")
a.write(','+LogTime-temp)
temp = LogTime
答案 0 :(得分:3)
问题是您的格式在日期时间前后都加上了引号,并加上前导空格:
f.write("1, 1, '2018-01-01 10:00:00'\n")
但是您的解析器不会删除那些引号和空格,并且您的strptime
不会期望它们。而且,尽管2018-01-01 10:00:00
与您的格式匹配,但'2018-01-01 10:00:00'
与您的格式不匹配。
您可以通过以下几种方法解决此问题:
csv
模块进行读取(或numpy,因为您已经导入了该模块),它将自动处理CSV引用和空格。timestamp = columns[2].strip().strip("'")
。strptime
格式添加空格和引号:datetime.strptime(columns[2]," '%Y-%m-%d %H:%M:%S'")
第一个似乎是最干净的,但是它们都可以工作。
当然,一旦解决,就会出现另一个问题:a.write(','+LogTime-temp)
试图将字符串','
添加到datetime
对象中,然后减去{{1 }}从结果中。这些类型都不兼容,所以这没有道理。
如果您以后尝试比较,那么您必须:
None
; ,
,然后尝试将其中一个附加到字符串上
timedelta
将diff转换为字符串,而不是仅将其添加到str
,或者最好使用f字符串(或','
)而不是添加字符串。这应该足以让您入门,但这还不是完整的程序:
format
然后,您在尝试读取文件的同时尝试将其写入文件,这只会造成一团糟。您将阅读一行,然后覆盖下一行,或者更有可能覆盖下一行的一半,或者接下来的两三行,或者其他任何内容,然后再阅读下一行……您要做的是的:
temp = None
for line in a:
# ... up to LogTime = ...
if temp is not None:
diff = LogTime - temp
print(diff)
temp = LogTime
对其进行{1}}; os.replace
文件,重新close
相同的文件,然后写出行列表。答案 1 :(得分:0)
您正在读取此值“'2018-01-01 11:30:00'”,而不是此“ 2018-01-01 11:30:00”
只需尝试
LogTime = datetime.strptime(columns[2].strip(" '"),"%Y-%m-%d %H:%M:%S")
答案 2 :(得分:0)
您的数据似乎包含引号,因此变量中有“'2018-01-01 11:30:00'”,而不是“ 2018-01-01 11:30:00”。
您可以通过多种方式删除这些内容,以下是一些想法:
`/` is not writable.
Bundler will use `/tmp/bundler/home/unknown' as your home directory temporarily.
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies.............
Fetching rake 10.3.2
Retrying download gem from https://rubygems.org/ due to error (2/4): Errno::ENOENT No such file or directory @ rb_sysopen - /.gem/ruby/2.4.0/cache/rake-10.3.2.gem
Retrying download gem from https://rubygems.org/ due to error (3/4): Errno::ENOENT No such file or directory @ rb_sysopen - /.gem/ruby/2.4.0/cache/rake-10.3.2.gem
Retrying download gem from https://rubygems.org/ due to error (4/4): Errno::ENOENT No such file or directory @ rb_sysopen - /.gem/ruby/2.4.0/cache/rake-10.3.2.gem
Errno::ENOENT: No such file or directory @ rb_sysopen -
/.gem/ruby/2.4.0/cache/rake-10.3.2.gem
An error occurred while installing rake (10.3.2), and Bundler cannot continue.
Make sure that `gem install rake -v '10.3.2'` succeeds before bundling.
In Gemfile:
aws_account_utils was resolved to 0.1.4, which depends on
rake
或使用csv模块