Python converting datetime to be used in os.utime(Python 转换日期时间以在 os.utime 中使用)
问题描述
我无法在 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 中使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python 转换日期时间以在 os.utime 中使用
				
        
 
            
        基础教程推荐
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
 - 包装空间模型 2022-01-01
 - 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
 - PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
 - PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
 - 求两个直方图的卷积 2022-01-01
 - 修改列表中的数据帧不起作用 2022-01-01
 - Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
 - 在Python中从Azure BLOB存储中读取文件 2022-01-01
 - 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
 
    	
    	
    	
    	
    	
    	
    	
    	
				
				
				
				