Получение файла оболочки из PythonLinux

Ответить
Anonymous
 Получение файла оболочки из Python

Сообщение Anonymous »

Я работаю над кодом, который выполняет многопроцессорную обработку. Для этого я хочу соответственно получить разные файлы. Я хочу, чтобы исходный код был внутри моего файла Python, поскольку мне не очень нравится bash. Я попробовал все решения, изложенные в следующем посте, но мне ничего не помогло. Перед запуском файла Python я создаю файл таким образом, чтобы echo $DETECTOR_PATH возвращал /data/tomble/eic/epic/install/share/epic. Теперь я запускаю файл Python и копирую каталог, в котором находится файл sh:

Код: Выделить всё

    def copy_epic(self, curr_px_path):
# copy epic to respective px folder for parameter reference
os.system(f'cp -r {self.det_dir} {curr_px_path}')
return os.path.join(curr_px_path, "epic")
а затем я запускаю цикл изменения curr_px_path:

Код: Выделить всё

            # copy epic and compact folders (os.path.join(curr_px_path, "epic"))
curr_px_epic_path = self.copy_epic(curr_px_path)

print(f"curr_px_epic_path: {curr_px_epic_path}")

# source current detector
self.source_px_epic(curr_px_epic_path + "/install/bin/thisepic.sh")

print(f"os.environ['DETECTOR_PATH']: {os.environ['DETECTOR_PATH']}")
Использование одного из решений, предложенных в сообщении:

Код: Выделить всё

    def source_px_epic(self, current_px_epic_sh_path):
command = shlex.split("bash -c f'source {current_px_epic_sh_path} && env'")
proc = subprocess.Popen(command, stdout = subprocess.PIPE)
for line in proc.stdout:
(key, _, value) = line.partition("=")
os.environ[key] = value
proc.communicate()

pprint.pprint(dict(os.environ))
Но мои отпечатки показывают, что это не работает:

Код: Выделить всё

curr_px_epic_path: /data/tomble/Analysis_epic_new/simulations/simEvents/2.0x0.1px/epic
os.environ['DETECTOR_PATH']: /data/tomble/eic/epic/install/share/epic
Поскольку я скопировал папку с файлом оболочки, я хочу получить

Код: Выделить всё

os.environ['DETECTOR_PATH']: /data/tomble/Analysis_epic_new/simulations/simEvents/2.0x0.1px/epic
после поиска.
Я попробовал все функции поиска Python в сообщении, ссылку на которое я дал выше. Я запускаю этот файл в среде сингулярности и использую Ubuntu 24.04.01. Что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... rom-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»