python转换datetime以在os.utime中使用 [英] python converting datetime to be used in os.utime

查看:111
本文介绍了python转换datetime以在os.utime中使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法在python文件中设置ctime / mtime。首先,我通过ftp获取文件的原始时间戳。

I cannot set ctime/mtime on my file within python. First I get the orginal 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()文档


否则,必须是2元组的数字,格式为(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转换datetime以在os.utime中使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆