問題描述
我無法在 Python 中對我的文件設(shè)置 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
我想為下載的文件設(shè)置原始時間戳
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 轉(zhuǎn)換為 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 必須是數(shù)字的二元組,格式為 (atime, mtime)
,分別用于設(shè)置訪問時間和修改時間.
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
都設(shè)置為相同的值:
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
必須是整數(shù);你給它一個時間元組;使用 time.mktime 將其轉(zhuǎn)換為以秒為單位的時間戳()
:
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())
這篇關(guān)于Python 轉(zhuǎn)換日期時間以在 os.utime 中使用的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!