是否从python中的rsync listing命令中删除文件权限、创建日期?

是否从python中的rsync listing命令中删除文件权限、创建日期?,python,Python,我在Django/Python中使用rsync--list-only命令: subprocess.Popen(['rsync', '--list-only', source], stdout=subprocess.PIPE, env={'RSYNC_PASSWORD': password}).communicate()[0] 它返回的结果如下: drwxrwxrwx 4096 2012

我在Django/Python中使用rsync--list-only命令:

subprocess.Popen(['rsync', '--list-only', source],
                           stdout=subprocess.PIPE, 
                           env={'RSYNC_PASSWORD': password}).communicate()[0]
它返回的结果如下:

drwxrwxrwx 4096 2012/11/07 09:56:23 upload
upload
我不想要所有的文件信息。我只希望文件名显示如下:

drwxrwxrwx 4096 2012/11/07 09:56:23 upload
upload

我该怎么做?感谢

rsync没有缩写输出的选项,您需要使用正则表达式(或
split()


rsync没有缩写输出的选项,您需要使用正则表达式(或
split()

您可以与
maxplit
参数一起使用,以放弃前4个字段。例如

>>> "drwxrwxrwx 4096 2012/11/07 09:56:23 upload".split(None, 4)[-1]
'upload'
>>> "drwxrwxrwx 4096 2012/11/07 09:56:23 doc with spaces.txt".split(None, 4)[-1]
'doc with spaces.txt'
None
用作分隔符,表示任何空白

在您的情况下,假设rsync命令可能返回多个文件,您可以尝试:

# retrieve output
out = subprocess.Popen(['rsync', '--list-only', source],
                       stdout=subprocess.PIPE, 
                       env={'RSYNC_PASSWORD': password}).communicate()[0]
# parse block of text into list of strings
lines = (x.strip() for x in out.split('\n'))
# take only filenames (ignoring empty lines)
filenames = [x.split(None, 4)[-1] for x in lines if x]
您可以与
maxplit
参数一起使用,以放弃前4个字段。例如

>>> "drwxrwxrwx 4096 2012/11/07 09:56:23 upload".split(None, 4)[-1]
'upload'
>>> "drwxrwxrwx 4096 2012/11/07 09:56:23 doc with spaces.txt".split(None, 4)[-1]
'doc with spaces.txt'
None
用作分隔符,表示任何空白

在您的情况下,假设rsync命令可能返回多个文件,您可以尝试:

# retrieve output
out = subprocess.Popen(['rsync', '--list-only', source],
                       stdout=subprocess.PIPE, 
                       env={'RSYNC_PASSWORD': password}).communicate()[0]
# parse block of text into list of strings
lines = (x.strip() for x in out.split('\n'))
# take only filenames (ignoring empty lines)
filenames = [x.split(None, 4)[-1] for x in lines if x]