Как извлечь все переменные и их значения из сценария Python с расположением, например, «C: \\ Users \\ SomeFolder \\ PythonFile.py»? - PullRequest
0 голосов
/ 05 июня 2019

Я работаю над текстовым редактором, созданным на python, и хочу добавить функцию Variable Explorer в свой редактор. Я не могу извлечь значения переменных из файла python. Мой основной принцип работы заключается в том, что моя программа берет местоположение текущего отредактированного файла и пытается импортировать его, но я не могу импортировать, потому что это строка, а не объект. Это немного сбивает с толку, поэтому позвольте мне показать код.

fileName='C:\Users\Project.py'
class varExplorer:
    def ShowVarList(editfile):
       editfile.replace('\','.')
       editfile.replace('.py','')
       editfile.replace(':','')
       # so the file path will be like C.Users.Project
       import editfile # the problem
       print(editfile.__dict__)# here i will get dictionary of values

varExplorer.ShowVarList(fileName)

помощь, полученная за dict

print(editfile.__dict__)

из Я хочу извлечь все имена переменных с помощью скрипта Python, из файла Python, без редактирования файла Python

Основная проблема в том, что он не может импортировать из строки

import editfile # the problem

потому что это строка, а импорт не принимает строки

Поэтому мне нужна функция, которая может печатать все переменные и их значения из определенного файла python из любого места.

1 Ответ

1 голос
/ 05 июня 2019

Использование importlib

import importlib
importlib.import_module(editfile)

Также будьте осторожны, str является неизменным в Python, replace возвращает новую строку и не изменяет ее аргумент. Итак, вы получите:

import importlib

class VarExplorer:
    def show_var_list(editfile):
       editfile = editfile.replace('\\','.')
       editfile = editfile.replace('.py','')
       editfile = editfile.replace(':','')
       # so the file path will be like C.Users.Project
       module = importlib.import_module(editfile) # the solution
       print(vars(module))
...