Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解析名称未知的文件_Python_File_Parsing_File Io - Fatal编程技术网

Python 如何解析名称未知的文件

Python 如何解析名称未知的文件,python,file,parsing,file-io,Python,File,Parsing,File Io,我想使用s3cmd接口从s3下载一个文件。我正在使用命令: s3cmd get s3://db-backups/db/production_dump_2013-09-12_12-00.sql.gz dump1.sql.g 命令运行良好。接下来,我想自动化下载文件的任务。目录中有多个名称相似的文件,只是时间戳不同,如: production_dump_2013-09-12_09-00.sql.gz production_dump_2013-09-12_12-00.sql.gz productio

我想使用s3cmd接口从s3下载一个文件。我正在使用命令:

s3cmd get s3://db-backups/db/production_dump_2013-09-12_12-00.sql.gz dump1.sql.g
命令运行良好。接下来,我想自动化下载文件的任务。目录中有多个名称相似的文件,只是时间戳不同,如:

production_dump_2013-09-12_09-00.sql.gz
production_dump_2013-09-12_12-00.sql.gz
production_dump_2013-09-12_15-00.sql.gz
production_dump_2013-09-12_18-00.sql.gz
production_dump_2013-09-12_21-00.sql.gz
如何下载最新的文件?如果已知文件名,则我可以使用:

cmd = 's3cmd get s3://voylladb-backups/db/production_dump_2013-09-12_12-00.sql.gz dump1.sql.gz'
args = shlex.split(cmd)
p=subprocess.Popen(args)
p.wait()
如何修改(或使用其他方法)以获取具有最新时间戳的文件


谢谢

您可以使用
s3cmd ls s3://voyllab backups/db/

然后假设你得到了一个列表,你可以对它进行反向排序,并获取第一项。这可能不是写这篇文章的最简洁的方式,但应该可以:

import subprocess, re

# Use subprocess.check_output to get the output from the terminal command
lines = subprocess.check_output("s3cmd ls s3://voylladb-backups/db/".split(" ")).split("\n")

# the format is a bit weird so we want to isolate just the s3:// paths
# we'll use a regex search to find the s3:// pattern and any subsequent characters
file_re = re.compile("s3://.+")
files = []

# next we iterate over each line of output from s3cmd ls looking for the s3 paths
for line in lines:
    result = file_re.search(line)
    if result:
        # and add them to our list
        files.append(result.group(0))

# finally, reverse the list so the newest file is first, and grab the first item
files.sort(reverse=True)
print files[0] # production_dump_2013-09-12_21-00.sql.gz

记下日期,格式化它,将它插入到你的command@naka更新以反映从s3cmd获取列表。