Получить строку в Shell / Python с подпроцессом - PullRequest
0 голосов
/ 26 февраля 2019

После этой темы Получить строку в Shell / Python, используя sys.argv , мне нужно изменить свой код, мне нужно использовать подпроцесс в main.py с этой функцией:

def download_several_apps(self):
     subproc_two = subprocess.Popen(["./readtext.sh", self.inputFileName_download], stdout=subprocess.PIPE)

Вот мой файл readtext.sh

#!/bin/bash    
filename="$1"
counter=1
while IFS=: true; do
  line=''
  read -r line
  if [ -z "$line" ]; then
    break
  fi

  python3 ./download.py \
    -c ./credentials.json \
    --blobs \
    "$line"
done < "$filename"

И мой download.py файл

if (len(sys.argv) == 2):
    downloaded_apk_default_location = 'Downloads/'

else:
    readtextarg = os.popen("ps " + str(os.getppid()) + " | awk ' { out = \"\"; for(i = 6; i <= NF; i++) out = out$i\" \" } END { print out } ' ").read()
    textarg = readtextarg.split(" ")[1 : -1][0]
    downloaded_apk_default_location = 'Downloads/'+textarg[1:]

Как мне получить и напечатать self.inputFileName_download в моем файле download.pyфайл ?Я использовал sys.argv в качестве ответа @tripleee в моем предыдущем посте, но он не работает так, как мне нужно.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Направление оболочки здесь кажется совершенно излишним.

import download

with open(self.inputFileName_download) as apks:
    for line in apks:
        if line == '\n':
            break
        blob = line.rstrip('\n')
        download.something(blob=blob, credentials='./credentials.json')

... где, очевидно, мне пришлось размышлять о том, как может вызываться соответствующая функция из downloads.py.

0 голосов
/ 26 февраля 2019

Хорошо. Я изменил последнюю строку на:

downloaded_apk_default_location = 'Downloads/'+textarg.split("/")[-1]

, чтобы получить имя текстового файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...