OSError:否此类文件或目录

时间:2015-03-19 17:28:12

标签: python

我有以下代码来检查s3 bucket中是否存在文件。我给程序一个目录,我试图上传该目录中的所有文件。但是我不知道为什么我一直遇到OSError: [Errno 2] No such file or directory: 'foo.txt'错误。这是我的代码

def s3_has_uptodate_file(bucket, transfer_file, source_size):

    bucket = Bucket(conn, default_bucket)
    s3_key = bucket.get_key(os.path.basename(transfer_file))
    if s3_key:
        s3_size = s3_key.size
        local_size = source_size
        s3_time = rfc822.mktime_tz(rfc822.parsedate_tz(s3_key.last_modified))
        local_time = os.path.getmtime(os.path.basename(transfer_file)) #fails here
        return s3_size == local_size and s3_time >= local_time
    return False

我检查了我的stackdata,我的存储桶名称正确,传输文件为/Users/merlin/Desktop/test_folder/foo.txt,源大小为141(正确大小)。

我将以下几行代码放入一个新文件中进行测试,并且运行完美。

import os
transfer_file = '/Users/merlin/Desktop/test_folder/foo.txt'
local_time = os.path.getmtime(os.path.basename(transfer_file))
print local_time

1 个答案:

答案 0 :(得分:2)

os.path.basename(transfer_file)将仅返回路径中的文件名。这是来自任何os.path方法的前瞻性的相对路径。除非您从"foo.txt"所在的目录运行该程序,否则os.path.getmtime肯定会失败。您需要将绝对路径传递给"foo.txt"。您可能只想使用os.path.getmtime(transfer_file)