如何断开“/home/username/ok”/确定.txt“在Python中的树层次结构中?

2024-10-06 11:49:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中使用以下命令获得文件或目录的完整路径的输出:

command = subprocess.Popen(['sshpass', '-p', password, 'rsync', '--recursive', source],
                           stdout=subprocess.PIPE).communicate()[0]

我得到问题中的结果。现在我想将输出分解为:

^{pr2}$

尝试使用:command.split('\')但没有用。中断后我想让用户选择每个文件或目录太。我怎么能做到呢?谢谢

编辑: 实际上它是一个列表,但是我使用Django模板中的join将其分解,所以我想它现在是一个字符串。现在输出如下:

django
django/genelaytics
django/genelaytics/.project
django/genelaytics/.pydevproject
django/genelaytics/manage.py
django/genelaytics/fileupload
django/genelaytics/fileupload/__init__.py
django/genelaytics/fileupload/__init__.pyc
django/genelaytics/fileupload/form.html~
django/genelaytics/fileupload/forms.py
django/genelaytics/fileupload/forms.pyc
django/genelaytics/fileupload/models.py

期望输出:

django
  genelaytics
    .project
     .pydevproject

我要文件和文件夹的树状结构。谢谢

如果很难从字符串转换为树,我也有这样的列表:

['django', 'django/genelaytics', 'django/genelaytics/.project', 'django/genelaytics/.pydevproject', 'django/genelaytics/manage.py', 'django/genelaytics/fileupload', 'django/genelaytics/fileupload/__init__.py', 'django/genelaytics/fileupload/__init__.pyc']

我想要和上面一样的输出。如果从字符串转换树很容易,我会这样做;否则,如果从列表转换树很容易,让我们以容易的为准。没问题!在


Tags: 文件django字符串py目录project列表manage
3条回答

考虑使用^{}。在

我可能误会了,但假设你有一根这样的绳子,这行吗?在

In [14]: s = '/home/username/ok/ok.txt'

In [15]: for index, el in enumerate(s.split('/')[1:]):
   ....:     print '  ' * index + el
   ....:
   ....:

  home
    username
      ok
        ok.txt

这将遍历拆分字符串,跳过第一个(空白)元素,并打印出以两个空格乘以当前索引(0、1、2等)作为前缀的元素。不确定您想要使用什么接口来允许选择,但我想您可以做一些类似的事情:

^{pr2}$

这基本上和上面一样,添加一个“标记”并使用字符串格式来显示字符串。要允许使用raw_input进行选择,可以尝试以下操作:

In [26]: my_path = s.split('/')[1:]

In [27]: my_path
Out[27]: ['home', 'username', 'ok', 'ok.txt']

In [28]: choice = int(raw_input(('Enter choice: ')))
Enter choice: 2

In [29]: print my_path[choice-1]
username

我想这能让你达到99%。。在

t = "/home/username/ok/ok.txt"
for i,j in enumerate(t.split("/")):
    print i * " " + j

 home
  username
   ok
    ok.txt

对于python,字符串可以是数字的倍数,如下所示:

^{pr2}$

枚举将返回一个元组,第一个元素是可迭代对象的索引。在

for i in enumerate(t.split("/")):
    print i


output: (0, '')
output: (1, 'home')
output: (2, 'username')
output: (3, 'ok')
output: (4, 'ok.txt')

相关问题 更多 >