Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
217 views
in Technique[技术] by (71.8m points)

Endless loop when importing a variable from another file in Python

I have a file called main.py and based on the user input I want to run the code either from file export.py, either from file import.py. This is how my code from main.py looks:

print("Hi, " + os.getlogin() + "!")
print("Extracting filenames...")
path = input('Tell me the path!
')
filenames = [x for x in os.listdir(path)]
ID = [f for f in filenames if re.search("(?<=ID)(d+)", f)]
filestxt = "Files.txt"
idtxt = "ID.txt"
PathFiles = os.path.join(path, filestxt)
PathID = os.path.join(path, idtxt)
file = open(PathFiles, "w+")
file.write('
'.join(ID))
file.close()
with open(PathID, 'w') as f:
    for item in ID:
        list = re.findall("(?<=ID)(d+)", item)
        string = ('
'.join(list))
        f.write("%s
" % string)


key = input("Export or Import(e/i)?:")
    if key == 'e':
        os.system('python export.py')

When I am hitting the 'e' button Python is running the code from export.py, but when it gets to the line

from main import PathID

instead of importing the variable which I need for the following function

    with open(PathID) as f:
        for line in f:
        ...

the code from main.py is running again and again from the beginning and I get the following lines in the console:

"Hi, " + os.getlogin() + "!"
"Extracting filenames..."
'Tell me the path!
'
"Export or Import(e/i)?:"

All I want in export.py is to tell Python to read the ID.txt file from the path I have specified in the main.py file.

How can I call the function from main.py in export.py without getting this endless loop?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Try to use

if __name__ == '__main__':

before

key = input ("Export or Import (e / i) ?:")
     if key == 'e':
         os.system ('python export.py')

or before any code that should always be executed at startup.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...