我无法在 Python 中对我的文件设置 ctime/mtime.首先我通过 FTP 获取文件的原始时间戳.
I cannot set ctime/mtime on my file within Python. First I get the original timestamp of the file through FTP.
我唯一想要的就是使用 ftplib 在我下载的文件上保留原始时间戳.
The only thing I want is to keep the original timestamps on my downloaded files using the ftplib.
def getFileTime(ftp,name):
try :
modifiedTime = ftp.sendcmd('MDTM ' + name)
filtid = datetime.strptime(modifiedTime[4:], "%Y%m%d%H%M%S").strftime("%d %B %Y %H:%M:%S")
return filtid
except :
return False
然后我下载文件
def downloadFile(ftp, fileName) :
try:
ftp.retrbinary('RETR %s' % fileName,open(fileName, 'wb').write)
except ftplib.error_perm:
print 'ERROR: cannot read file "%s"' % fileName
os.unlink(fileName)
return False
else:
print '*** Downloaded "%s" to CWD' % fileName
return True
我想为下载的文件设置原始时间戳
and the I want to set the original timestamp to the downloaded file
def modifyTimestapToOriginal(fileName, orgTime):
#try:
os.utime(fileName, orgTime)
fileName.close()
# return True
# except:
# return False
这就是我尝试的方式
ftp, files = f.loginftp(HOST,user,passwd,remoteDir)
for i in files :
if not f.isDir(ftp,i) :
fixTime = datetime.strptime(varfixtime, "%d-%m-%Y %H:%M:%S")
ftime = f.getFileTime(ftp,i)
if ftime >= fixTime :
print (ftime)
os.chdir('c:/testdownload')
f.downloadFile(ftp,i)
settime = ftime.timetuple()
print "settime '%s'" % settime
#f.modifyTimestapToOriginal(i, settime)
错误是:
os.utime(fileName, orgTime)
TypeError: utime() arg 2 must be a tuple (atime, mtime)
谁能帮我给我一个更好的方法来保留原始文件时间戳或如何将 ftime 转换为 os.utime 的可用元组
Can anyone help me either give me a better way to keep the original file timestamps or how to convert the ftime to a usable tuple for os.utime
来自 os.utime() 文档:
From the os.utime() documentation:
否则,times 必须是数字的二元组,格式为 (atime, mtime),分别用于设置访问时间和修改时间.
Otherwise, times must be a 2-tuple of numbers, of the form
(atime, mtime)which is used to set the access and modified times, respectively.
你没有给它一个元组.在这种情况下,只需将 atime 和 mtime 都设置为相同的值:
You are not giving it a tuple. In this case, just set both atime and mtime to the same value:
os.utime(fileName, (orgTime, orgTime))
fileName 是一个字符串,所以 fileName.close() 不起作用(你会得到一个属性错误),只需删除该行.
fileName is a string, so fileName.close() won't work (you'll get an attribute error), just drop that line.
orgTime 必须是整数;你给它一个时间元组;使用 time.mktime 将其转换为以秒为单位的时间戳():
orgTime must be an integer; you are giving it a time tuple; convert it to a timestamp in seconds since the epoch with time.mktime():
settime = time.mktime(ftime.timetuple())
这篇关于Python 转换日期时间以在 os.utime 中使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
为什么我不能插入 Python 列表?Why I cannot make an insert to Python list?(为什么我不能插入 Python 列表?)
在 DataFrame 的开头(最左端)插入一列Insert a column at the beginning (leftmost end) of a DataFrame(在 DataFrame 的开头(最左端)插入一列)
Python psycopg2 没有插入到 postgresql 表中Python psycopg2 not inserting into postgresql table(Python psycopg2 没有插入到 postgresql 表中)
list extend() 索引,不仅将列表元素插入到末尾list extend() to index, inserting list elements not only to the end(list extend() 索引,不仅将列表元素插入到末尾)
如何使用 list.insert 将 Python 中的元素添加到列表How to add element in Python to the end of list using list.insert?(如何使用 list.insert 将 Python 中的元素添加到列表末尾?)
TypeError:“浮动"对象不可下标TypeError: #39;float#39; object is not subscriptable(TypeError:“浮动对象不可下标)