python subprocess output to list or file

前端 未结 5 1463
鱼传尺愫
鱼传尺愫 2020-12-31 21:20

I want to run the following bash command in Python 3:

ls -l

I know that I can do the following:

from subprocess import call         


        
5条回答
  •  盖世英雄少女心
    2020-12-31 21:49

    One way to access to the information in ls -l output is to parse it. For example, csv.DictReader could be use to map each column to a field in a dictionary:

    import subprocess
    import csv
    
    process = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
    stdout, stderr = process.communicate()
    
    reader = csv.DictReader(stdout.decode('ascii').splitlines(),
                            delimiter=' ', skipinitialspace=True,
                            fieldnames=['permissions', 'links',
                                        'owner', 'group', 'size',
                                        'date', 'time', 'name'])
    
    for row in reader:
        print(row)
    

    The code above will print a dictionary for each line in ls -l output such as:

    {'group': '',
     'name': '',
     'links': '1',
     'date': '',
     'time': '',
     'owner': '',
     'permissions': '-rw-rw-r--',
     'size': ''}
    

提交回复
热议问题